Postman沙箱是一個JavaScript執(zhí)行環(huán)境,當你為請求編寫預請求腳本或測試腳本時,編寫的腳本在這個沙箱中進行。
創(chuàng)新互聯(lián)公司專注于古田企業(yè)網(wǎng)站建設,成都響應式網(wǎng)站建設公司,成都商城網(wǎng)站開發(fā)。古田網(wǎng)站建設公司,為古田等地區(qū)提供建站服務。全流程定制設計,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務
就是結合了JS腳本完成測試中的功能,在請求發(fā)起前后實現(xiàn)部分測試操作。
接口請求之前執(zhí)行的腳本。
接口請求之后執(zhí)行的腳本,通常用于斷言的操作。
在測試的時候我們需要對測試結果進行校驗,判斷結果是否符合我們的預期,這個過程就叫做斷言。
呵呵其實單純的javascript是編不出木馬的,因為javascript語言本身是沒有操作文件的能力的,一般的掛馬方式是通過在網(wǎng)頁里加入空的ifram把你網(wǎng)頁的一部分偷偷鏈接到有毒的網(wǎng)站上,然后下載exe病毒,單純的下載是不會立即執(zhí)行的,就如你所說,但你知道你的電腦為什么要經(jīng)常打補丁嗎?那就是有時ie的漏洞會導致經(jīng)過利用后下載會直接執(zhí)行exe,所以為什么很多人說ie不安全,所以要常打補丁,明白了不
一、功能實現(xiàn)核心:FileSystemObject 對象
要在javascript中實現(xiàn)文件操作功能,主要就是依靠FileSystemobject對象。
二、FileSystemObject編程?
使用FileSystemObject 對象進行編程很簡單,一般要經(jīng)過如下的步驟: 創(chuàng)建FileSystemObject對象、應用相關方法、訪問對象相關屬性 。?
(一)創(chuàng)建FileSystemObject對象?
創(chuàng)建FileSystemObject對象的?
代碼只要1行:?
var fso = new ActiveXObject("Scripting.FileSystemObject");?
上述代碼執(zhí)行后,fso就成為一個FileSystemObject對象實例。?
(二)應用相關方法?
創(chuàng)建對象實例后,就可以使用對象的相關方法了。比如,使用CreateTextFile方法創(chuàng)建一個文本文件:?
var fso = new ActiveXObject("Scripting.FileSystemObject");?
var f1 = fso.createtextfile("c://myjstest.txt",true");?
(三)訪問對象相關屬性?
要訪問對象的相關屬性,首先要建立指向?qū)ο蟮木浔@就要通過get系列方法實現(xiàn):GetDrive負責獲取驅(qū)動器信息,GetFolder負責獲取文件夾信息,GetFile負責獲取文件信息。比如,指向下面的代碼后,f1就成為指向文件c:/test.txt的句柄:?
var fso = new ActiveXObject("Scripting.FileSystemObject");?
var f1 = fso.GetFile("c://myjstest.txt");?
然后,使用f1訪問對象的相關屬性。比如:?
var fso = new ActiveXObject("Scripting.FileSystemObject");?
var f1 = fso.GetFile("c://myjstest.txt");?
alert("File last modified: " + f1.DateLastModified);?
執(zhí)行上面最后一句后,將顯示c:/myjstest.txt的最后修改日期屬性值。?
但有一點請注意:對于使用create方法建立的對象,就不必再使用get方法獲取對象句柄了,這時直接使用create方法建立的句柄名稱就可以:?
var fso = new ActiveXObject("Scripting.FileSystemObject");?
var f1 = fso.createtextfile("c://myjstest.txt",true");?
alert("File last modified: " + f1.DateLastModified);?
三、操作驅(qū)動器(Drives)?
使用FileSystemObject對象來編程操作驅(qū)動器(Drives)和文件夾(Folders)很容易,這就象在Windows文件瀏覽器中對文件進行交互操作一樣,比如:拷貝、移動文件夾,獲取文件夾的屬性。?
(一)Drives對象屬性?
Drive對象負責收集系統(tǒng)中的物理或邏輯驅(qū)動器資源內(nèi)容,它具有如下屬性:?
l TotalSize:以字節(jié)(byte)為單位計算的驅(qū)動器大小。?
l AvailableSpace或FreeSpace:以字節(jié)(byte)為單位計算的驅(qū)動器可用空間。?
l DriveLetter:驅(qū)動器字母。?
l DriveType:驅(qū)動器類型,取值為:removable(移動介質(zhì))、fixed(固定介質(zhì))、network(網(wǎng)絡資源)、CD-ROM或者RAM盤。?
l SerialNumber:驅(qū)動器的系列碼。?
l FileSystem:所在驅(qū)動器的文件系統(tǒng)類型,取值為FAT、FAT32和NTFS。?
l IsReady:驅(qū)動器是否可用。?
l ShareName:共享名稱。?
l VolumeName:卷標名稱。?
l Path和RootFolder:驅(qū)動器的路徑或者根目錄名稱。?
(二)Drive對象操作例程?
下面的例程顯示驅(qū)動器C的卷標、總容量和可用空間等信息:?
var fso, drv, s ="";?
fso = new ActiveXObject("Scripting.FileSystemObject");?
drv = fso.GetDrive(fso.GetDriveName("c://"));?
s += "Drive C:" + " - ";?
s += drv.VolumeName + "/n";?
s += "Total Space: " + drv.TotalSize / 1024;?
s += " Kb" + "/n";?
s += "Free Space: " + drv.FreeSpace / 1024;?
s += " Kb" + "/n";?
alert(s);?
四、操作文件夾(Folders)?
涉及到文件夾的操作包括創(chuàng)建、移動、刪除以及獲取相關屬性。?
Folder對象操作例程 :?
下面的例程將練習獲取父文件夾名稱、創(chuàng)建文件夾、刪除文件夾、判斷是否為根目錄等操作:?
var fso, fldr, s = "";?
// 創(chuàng)建FileSystemObject對象實例?
fso = new ActiveXObject("Scripting.FileSystemObject");?
// 獲取Drive 對象?
fldr = fso.GetFolder("c://");?
// 顯示父目錄名稱?
alert("Parent folder name is: " + fldr + "/n");?
// 顯示所在drive名稱?
alert("Contained on drive " + fldr.Drive + "/n");?
// 判斷是否為根目錄?
if (fldr.IsRootFolder)?
alert("This is the root folder.");?
else?
alert("This folder isn't a root folder.");?
alert("/n/n");?
// 創(chuàng)建新文件夾?
fso.CreateFolder ("C://Bogus");?
alert("Created folder C://Bogus" + "/n");?
// 顯示文件夾基礎名稱,不包含路徑名?
alert("Basename = " + fso.GetBaseName("c://bogus") + "/n");?
// 刪除創(chuàng)建的文件夾?
fso.DeleteFolder ("C://Bogus");?
alert("Deleted folder C://Bogus" + "/n");?
五、操作文件(Files)?
對文件進行的操作要比以上介紹的驅(qū)動器(Drive)和文件夾(Folder)操作復雜些,基本上分為以下兩個類別:對文件的創(chuàng)建、拷貝、移動、刪除操作和對文件內(nèi)容的創(chuàng)建、添加、刪除和讀取操作。下面分別詳細介紹。?
(一)創(chuàng)建文件?
一共有3種方法可用于創(chuàng)建一個空文本文件,這種文件有時候也叫做文本流(text stream)。?
第一種是使用CreateTextFile方法。代碼如下:?
var?fso,?f1;?
fso?=?new?ActiveXObject("Scripting.FileSystemObject");?
f1?=?fso.CreateTextFile("c://testfile.txt",?true);
第二種是使用OpenTextFile方法,并添加上ForWriting屬性,F(xiàn)orWriting的值為2。代碼如下:?
var?fso,?ts;?
var?ForWriting=?2;?
fso?=?new?ActiveXObject("Scripting.FileSystemObject");?
ts?=?fso.OpenTextFile("c://test.txt",?ForWriting,?true);
第三種是使用OpenAsTextStream方法,同樣要設置好ForWriting屬性。代碼如下:?
var?fso,?f1,?ts;?
var?ForWriting?=?2;?
fso?=?new?ActiveXObject("Scripting.FileSystemObject");?
fso.CreateTextFile?("c://test1.txt");?
f1?=?fso.GetFile("c://test1.txt");?
ts?=?f1.OpenAsTextStream(ForWriting,?true);
(二)添加數(shù)據(jù)到文件?
當文件被創(chuàng)建后,一般要按照“打開文件-填寫數(shù)據(jù)-關閉文件”的步驟實現(xiàn)添加數(shù)據(jù)到文件的目的。?
打開文件可使用FileSystemObject對象的OpenTextFile方法,或者使用File對象的OpenAsTextStream方法。?
填寫數(shù)據(jù)要使用到TextStream對象的Write、WriteLine或者WriteBlankLines方法。在同是實現(xiàn)寫入數(shù)據(jù)的功能下,這3者的區(qū)別在于:Write方法不在寫入數(shù)據(jù)末尾添加新?lián)Q行符,WriteLine方法要在最后添加一個新?lián)Q行符,而WriteBlankLines則增加一個或者多個空行。?
關閉文件可使用TextStream對象的Close方法。?
(三)創(chuàng)建文件及添加數(shù)據(jù)例程?
下面的代碼將創(chuàng)建文件、添加數(shù)據(jù)、關閉文件幾個步驟結合起來進行應用:?
var fso, tf;?
fso = new ActiveXObject("Scripting.FileSystemObject");?
// 創(chuàng)建新文件?
tf = fso.CreateTextFile("c://testfile.txt", true);?
// 填寫數(shù)據(jù),并增加換行符?
tf.WriteLine("Testing 1, 2, 3.") ;?
// 增加3個空行?
tf.WriteBlankLines(3) ;?
// 填寫一行,不帶換行符?
tf.Write ("This is a test.");?
// 關閉文件?
tf.Close();?
(四)讀取文件內(nèi)容?
從文本文件中讀取數(shù)據(jù)要使用TextStream對象的Read、ReadLine或ReadAll 方法。Read方法用于讀取文件中指定數(shù)量的字符; ReadLine方法讀取一整行,但不包括換行符;ReadAll方法則讀取文本文件的整個內(nèi)容。讀取的內(nèi)容存放于字符串變量中,用于顯示、分析。?
方法或者屬性 描述?
BuildPath()?
生成一個文件路徑?
CopyFile() 復制文件?
CopyFolder() 復制目錄?
CreateFolder() 創(chuàng)建新目錄?
CreateTextFile() 生成一個文件?
DeleteFile() 刪除一個文件?
DeleteFolder() 刪除一個目錄?
DriveExists() 檢驗盤符是否存在?
Drives 返回盤符的集合?
FileExists() 檢驗文件是否存在?
FolderExists 檢驗一個目錄是否存在?
GetAbsolutePathName() 取得一個文件的絕對路徑?
GetBaseName() 取得文件名?
GetDrive() 取得盤符名?
GetDriveName() 取得盤符名?
GetExtensionName() 取得文件的后綴?
GetFile() 生成文件對象?
GetFileName() 取得文件名?
GetFolder() 取得目錄對象?
GetParentFolderName 取得文件或目錄的父目錄名?
GetSpecialFolder() 取得特殊的目錄名?
GetTempName() 生成一個臨時文件對象?
MoveFile() 移動文件?
MoveFolder() 移動目錄?
OpenTextFile() 打開一個文件流?
f.Files //目錄下所有文件集合?
f.attributes //文件屬性?
Case 0 Str="普通文件。沒有設置任何屬性。 "?
Case 1 Str="只讀文件??勺x寫。 "?
Case 2 Str="隱藏文件??勺x寫。 "?
Case 4 Str="系統(tǒng)文件。可讀寫。 "?
Case 16 Str="文件夾或目錄。只讀。 "?
Case 32 Str="上次備份后已更改的文件??勺x寫。 "?
Case 1024 Str="鏈接或快捷方式。只讀。 "?
Case 2048 Str=" 壓縮文件。只讀。"?
f.Datecreated // 創(chuàng)建時間?
f.DateLastAccessed //上次訪問時間?
f.DateLastModified // 上次修改時間?
f.Path //文件路徑?
f.Name //文件名稱?
f.Type //文件類型?
f.Size // 文件大小(單位:字節(jié))?
f.ParentFolder //父目錄?
f.RootFolder // 根目錄?
實例說明?
BuildPath(路徑,文件名) //這個方法會對給定的路徑加上文件,并自動加上分界符?
SCRIPT?LANGUAGE="JavaScript"?
!--?
var?fso?=?new?ActiveXObject("Scripting.FileSystemObject");?
var?newpath?=?fso.BuildPath("c://tmp",?"51js.txt");?//生成?c:/tmp/51js.txt的路徑?
alert(newpath);?
--?
/SCRIPT?
CopyFile(源文件,?目標文件,?覆蓋)?//復制源文件到目標文件,當覆蓋值為true時,如果目標文件存在會把文件覆蓋?
SCRIPT?LANGUAGE="JavaScript"?
!--?
var?fso?=?new?ActiveXObject("Scripting.FileSystemObject");?
var?newpath?=?fso.CopyFile("c://autoexec.bat",?"d://autoexec.bak");?
--?
/SCRIPT?
CopyFolder(對象目錄,目標目錄?,覆蓋)?//復制對象目錄到目標目錄,當覆蓋為true時,如果目標目錄存在會把文件覆蓋?
SCRIPT?LANGUAGE="JavaScript"?
!--?
var?fso?=?new?ActiveXObject("Scripting.FileSystemObject");?
fso.CopyFolder("c://WINDOWS//Desktop",?"d://");?//把C盤的Desktop目錄復制到D盤的根目錄?
--?
/SCRIPT?
CreateFolder(目錄名)?//創(chuàng)建一個新的目錄?
SCRIPT?LANGUAGE="JavaScript"?
!--?
var?fso?=?new?ActiveXObject("Scripting.FileSystemObject");?
var?newFolderName?=?fso.CreateFolder("c://51JS");?//在C盤上創(chuàng)建一個51JS的目錄?
--?
/SCRIPT?
CreateTextFile(文件名,?覆蓋)?//創(chuàng)建一個新的文件,如果此文件已經(jīng)存在,你需要把覆蓋值定為true?
SCRIPT?LANGUAGE="JavaScript"?
!--?
var?fso?=?new?ActiveXObject("Scripting.FileSystemObject");?
var?newFileObject?=?fso.CreateTextFile("c://autoexec51JS.bat",?true);?//腳本將在C盤創(chuàng)建一個叫?autoexec51JS.bat的文件?
--?
/SCRIPT?
DeleteFile(文件名,?只讀?)?//刪除一個文件,如果文件的屬性是只讀的話,你需要把只讀值設為true?
SCRIPT?LANGUAGE="JavaScript"?
!--?
var?fso?=?new?ActiveXObject("Scripting.FileSystemObject");?//為了安全我先把要刪除的autoexec.bat備份到你的D盤?
var?newpath?=?fso.CopyFile("c://autoexec.bat",?"d://autoexec.bat");?//把C盤的autoexec.bat文件刪除掉?
fso.DeleteFile("c://autoexec.bat",?true);?
--?
/SCRIPT?
DeleteFolder(文件名,?只讀?)//刪除一個目錄,如果目錄的屬性是只讀的話,你需要把只讀值設為true?
SCRIPT?LANGUAGE="JavaScript"?
!--?
var?fso?=?new?ActiveXObject("Scripting.FileSystemObject");?
fso.CopyFolder("c://WINDOWS//Desktop",?"d://");?//為了安全我先把你C盤的Desktop目錄復制到你D盤的根目錄?
fso.DeleteFolder("c://WINDOWS//Desktop",?true);?//把你的Desktop目錄刪除,但因為desktop是系統(tǒng)的東西,所以不能全部刪除,但.........?
--?
/SCRIPT?
DriveExists(盤符)?//檢查一個盤是否存在,如果存在就返會真,不存在就返回.......?
SCRIPT?LANGUAGE="JavaScript"?
!--?
var?fso?=?new?ActiveXObject("Scripting.FileSystemObject");?
hasDriveD?=?fso.DriveExists("d");?//檢查系統(tǒng)是否有D盤存在?
hasDriveZ?=?fso.DriveExists("z");?//檢查系統(tǒng)是否有Z盤存在?
if?(hasDriveD)?alert("你的系統(tǒng)內(nèi)有一個D盤");?
if?(!hasDriveZ)?alert("你的系統(tǒng)內(nèi)沒有Z盤");?
--?
/SCRIPT?
FileExists(文件名)?//檢查一個文件是否存在,如果存在就返會真,不存在就返回.......?
SCRIPT?LANGUAGE="JavaScript"?
!--?
var?fso?=?new?ActiveXObject("Scripting.FileSystemObject");?
fileName?=?fso.FileExists("c://autoexec.bat");?
if?(fileName)?alert("你在C盤中有autoexec.bat文件,按下確定后這個文件將被刪除!");?//開個玩笑:)?
--?
/SCRIPT?
FolderExists(目錄名)?//檢查一個目錄是否存在,如果存在就返會真,不存在就返回.......?
SCRIPT?LANGUAGE="JavaScript"?
!--?
var?fso?=?new?ActiveXObject("Scripting.FileSystemObject");?
folderName?=?fso.FolderExists("c://WINDOWS//Fonts");?
if?(folderName)?alert("按下確定后系統(tǒng)的字庫將被刪除!");?//開個玩笑:)?
--?
/SCRIPT?
GetAbsolutePathName(文件對象)?//返回文件對象在系統(tǒng)的絕對路徑?
SCRIPT?LANGUAGE="JavaScript"?
!--?
var?fso?=?new?ActiveXObject("Scripting.FileSystemObject");?
pathName?=?fso.GetAbsolutePathName("c://autoexec.bat");?
alert(pathName);?
--?
/SCRIPT?
GetBaseName(文件對象)?//返回文件對象的文件名?
SCRIPT?LANGUAGE="JavaScript"?
!--?
var?fso?=?new?ActiveXObject("Scripting.FileSystemObject");?
baseName?=?fso.GetBaseName("c://autoexec.bat");?//取得autoexec.bat的文件名autoexec?
alert(baseName);?
--?
/SCRIPT?
GetExtensionName(文件對象)?//文件的后綴?
SCRIPT?LANGUAGE="JavaScript"?
!--?
var?fso?=?new?ActiveXObject("Scripting.FileSystemObject");?
exName?=?fso.GetExtensionName("c://autoexec.bat");?//取得autoexec.bat后綴bat?
alert(exName);?
--?
/SCRIPT?
GetParentFolderName(文件對象)?//取得父級的目錄名?
SCRIPT?LANGUAGE="JavaScript"?
!--?
var?fso?=?new?ActiveXObject("Scripting.FileSystemObject");?
parentName?=?fso.GetParentFolderName("c://autoexec.bat");?//取得autoexec.bat的父級目錄C盤?
alert(parentName);?
--?
/SCRIPT?
GetSpecialFolder(目錄代碼)?//取得系統(tǒng)中一些特別的目錄的路徑,目錄代碼有3個分別是?0:安裝Window的目錄?1:系統(tǒng)文件目錄?2:臨時文件目錄?
SCRIPT?LANGUAGE="JavaScript"?
!--?
var?fso?=?new?ActiveXObject("Scripting.FileSystemObject");?
tmpFolder?=?fso.GetSpecialFolder(2);?//取得系統(tǒng)臨時文件目錄的路徑?如我的是?C:/windows/temp?
alert(tmpFolder);?
--?
/SCRIPT?
GetTempName()?//生成一個隨機的臨時文件對象,會以rad帶頭后面跟著些隨機數(shù),就好象一些軟件在安裝時會生成*.tmp?
SCRIPT?LANGUAGE="JavaScript"?
!--?
var?fso?=?new?ActiveXObject("Scripting.FileSystemObject");?
tmpName?=?fso.GetTempName();?//我在測試時就生成了radDB70E.tmp?
alert(tmpName);?
--?
/SCRIPT?
MoveFile(源文件,?目標文件)?//把源文件移到目標文件的位置?
SCRIPT?LANGUAGE="JavaScript"?
!--?
var?fso?=?new?ActiveXObject("Scripting.FileSystemObject");?
var?newpath?=?fso.MoveFile("c://autoexec.bat",?"d://autoexec.bat");?//把C盤的autoexec.bat文件移移動到D盤?
--
JavaScript沙箱當JavaScript第一次發(fā)布的時候,有一個可以理解的憂慮,那就是打開一個頁面可能會直接在機器上執(zhí)行一段代碼。如果JavaScript中含有一些有害的代碼,比如刪除所有Word文檔,或者更糟的是,向腳本的編寫者復制這些Word文檔,那該怎么呢?為了防止這種情況發(fā)生,同時也為了讓瀏覽器的用戶放心,JavaScript構建為只在沙箱中運行。沙箱是一個受保護的環(huán)境,在這個環(huán)境中,腳本不能訪問瀏覽器所在的計算機資源。另外,瀏覽器所實現(xiàn)的安全條件高出并超過了JavaScript語言所建立的最低條件。這些都定義在一個與瀏覽器相關的安全策略中,它決定了腳本能做什么不能做什么。例如,一個這樣的安全策略規(guī)定腳本不能與腳本所來源的域以外的頁面通信。大多數(shù)瀏覽器還提供了定制這一策略的方式,這可以使腳本所運行的環(huán)境限制變得更嚴或更松。關鍵詞javascript沙箱
文章題目:沙箱javascript,沙箱加速器
URL網(wǎng)址:http://jinyejixie.com/article22/dsdjjcc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供用戶體驗、微信公眾號、網(wǎng)站收錄、網(wǎng)站內(nèi)鏈、App設計、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)