模組vm
沙箱模組,用於隔離不同安全等級的運作環境
透過建立隔離沙箱,可以限制腳本執行時可以接觸的資源,隔離不同腳本執行環境,並可以為不同的環境客製化基礎模組,以保障整體運作環境的安全。
下面的範例建立一個沙箱,限制只允許存取全域基礎模組中的assert模組,並添加a 和b 兩個自訂模組:
1
2
3
4
5
6
7
8var vm = require('vm');
var sbox = new vm.SandBox({
a: 100,
b: 200,
assert: require('assert')
});
var mod_in_sbox = sbox.require('./path/to/mod');
物件
SandBox
1SandBox vm.SandBox;
Script
1Script vm.Script;
靜態函數
createContext
建立一個上下文對象
1
2static Object vm.createContext(Object contextObject = {},
Object opts = {});
呼叫參數:
- contextObject: Object, 指定將被上下文化的對象
- opts: Object, 指定上下文選項
回傳結果:
- Object, 回傳上下文對象
isContext
如果給定的object物件已使用vm.createContext() 進行上下文化,則回傳true
1static Boolean vm.isContext(Object contextObject);
呼叫參數:
- contextObject: Object, 指定要檢查的對象
回傳結果:
- Boolean, 如果給定的object物件已使用vm.createContext() 進行上下文化,則回傳true
runInContext
在給定contextifiedObject 內執行code 指定的程式碼並傳回結果
1
2
3static Value vm.runInContext(String code,
Object contextifiedObject,
Object opts = {});
呼叫參數:
- code: String, 指定要編譯和執行的腳本程式碼
- contextifiedObject: Object, 指定運行時的上下文對象
- opts: Object, 指定運行選項
回傳結果:
- Value, 返回運行結果
在給定contextifiedObject 內執行code 指定的程式碼並傳回結果
1
2
3static Value vm.runInContext(String code,
Object contextifiedObject,
String filename);
呼叫參數:
- code: String, 指定要編譯和執行的腳本程式碼
- contextifiedObject: Object, 指定運行時的上下文對象
- filename: String, 指定腳本檔名
回傳結果:
- Value, 返回運行結果
runInNewContext
使用給定的contextObject 在建立的上下文中, 在其中執行code 指定的程式碼並傳回結果
1
2
3static Value vm.runInNewContext(String code,
Object contextObject = {},
Object opts = {});
呼叫參數:
- code: String, 指定要編譯和執行的腳本程式碼
- contextObject: Object, 指定將被上下文化的對象
- opts: Object, 指定運行選項
回傳結果:
- Value, 返回運行結果
使用給定的contextObject 在建立的上下文中, 在其中執行code 指定的程式碼並傳回結果
1
2
3static Value vm.runInNewContext(String code,
Object contextObject = {},
String filename);
呼叫參數:
- code: String, 指定要編譯和執行的腳本程式碼
- contextObject: Object, 指定將被上下文化的對象
- filename: String, 指定腳本檔名
回傳結果:
- Value, 返回運行結果
runInThisContext
在當前上下文內執行code 指定的程式碼並傳回結果
1
2static Value vm.runInThisContext(String code,
Object opts = {});
呼叫參數:
- code: String, 指定要編譯和執行的腳本程式碼
- opts: Object, 指定運行選項
回傳結果:
- Value, 返回運行結果
在當前上下文內執行code 指定的程式碼並傳回結果
1
2static Value vm.runInThisContext(String code,
String filename);
呼叫參數:
- code: String, 指定要編譯和執行的腳本程式碼
- filename: String, 指定腳本檔名
回傳結果:
- Value, 返回運行結果