ObjectSandBox
Objecte sandbox aïllat, utilitzat per gestionar un espai d'execució independent
Tot el codi s'executa al seu propi sandbox. El requisit global cridarà al sandbox actual per carregar el mòdul i el sandbox es passarà al sandbox carregat mitjançant require. L'exemple següent crea una zona de proves que restringeix l'accés només als mòduls bàsics globals.assertmòdul i afegiu dos mòduls personalitzats a i 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');
Cal tenir en compte que SandBox no és una caixa de proves de seguretat a prova d'atacs. SandBox és només un espai d'execució independent que es pot utilitzar per aïllar diferents codis i evitar interferències mútues, però no pot prevenir codis maliciosos.
relació hereditària
Constructor
SandBox
Construeix un nou objecte sandbox d'aïllament i inicialitza el mòdul bàsic
1new SandBox(Object mods = {});
Paràmetres de trucada:
- mods: Objecte, especifica el diccionari d'objectes del mòdul que cal afegir
Construeix un nou objecte sandbox d'aïllament i inicialitza el mòdul bàsic
1
2new SandBox(Object mods,
Function require);
Paràmetres de trucada:
- mods: Objecte, especifica el diccionari d'objectes del mòdul que cal afegir
- require: Funció, una funció de requeriment personalitzada. Quan el mòdul no existeix, la funció personalitzada es crida primer, sense retorn, i després es carrega des del fitxer.
Construïu un nou objecte de prova d'aïllament global independent i inicialitzeu el mòdul bàsic
1
2new SandBox(Object mods,
Object global);
Paràmetres de trucada:
- mods: Objecte, especifica el diccionari d'objectes del mòdul que cal afegir
- global: Objecte, especifica la propietat Global inicialitzada
Construïu un nou objecte de prova d'aïllament global independent i inicialitzeu el mòdul bàsic
1
2
3new SandBox(Object mods,
Function require,
Object global);
Paràmetres de trucada:
- mods: Objecte, especifica el diccionari d'objectes del mòdul que cal afegir
- require: Funció, una funció de requeriment personalitzada. Quan el mòdul no existeix, la funció personalitzada es crida primer, sense retorn, i després es carrega des del fitxer.
- global: Objecte, especifica la propietat Global inicialitzada
propietats dels membres
global
Objecte, consulta sandboxglobalobjecte
1readonly Object SandBox.global;
modules
Objecte, consulteu l'objecte diccionari de tots els mòduls existents a la zona de proves
1readonly Object SandBox.modules;
funció de membre
addBuiltinModules
Afegiu mòduls bàsics integrats a la caixa de sorra
1SandBox.addBuiltinModules();
add
Afegiu un mòdul base a la caixa de sorra
1
2SandBox.add(String id,
Value mod);
Paràmetres de trucada:
- id: String, especifica el nom del mòdul que s'ha d'afegir. Aquest camí no té res a veure amb l'script que s'executa actualment. Ha de ser un camí absolut o un nom de mòdul.
- mod: Valor, especifica l'objecte mòdul que cal afegir
Afegiu un conjunt de mòduls bàsics a la caixa de sorra
1SandBox.add(Object mods);
Paràmetres de trucada:
- mods: Objecte, especifica el diccionari d'objectes del mòdul que s'ha d'afegir. El mòdul javascript afegit generarà una còpia per evitar la interferència mútua entre els objectes de modificació del sandbox.
addScript
Afegiu un mòdul d'script a la zona de proves
1
2Value SandBox.addScript(String srcname,
Buffer script);
Paràmetres de trucada:
- srcname: String, especifica el nom de l'script que cal afegir, srcname ha d'incloure l'extensió, com arajsonO js, jsc
- script:Buffer, especifica el codi binari que cal afegir
Resultats de retorn:
- Value, retorna l'objecte mòdul carregat
remove
Elimina el mòdul base especificat de la caixa de proves
1SandBox.remove(String id);
Paràmetres de trucada:
- id: String, especifica el nom del mòdul que s'ha de suprimir. Aquest camí no té res a veure amb l'script que s'executa actualment. Ha de ser un camí absolut o un nom de mòdul.
has
Detecteu si el mòdul bàsic existeix des del sandbox
1Boolean SandBox.has(String id);
Paràmetres de trucada:
- id: String, especifica el nom del mòdul a detectar. Aquest camí no té res a veure amb l'script que s'executa actualment. Ha de ser un camí absolut o un nom de mòdul.
Resultats de retorn:
- Boolean, existeix?
clone
Copieu el sandbox actual. El nou sandbox conté els mòduls del sandbox actual amb el mateix nom i requereixen funció.
1SandBox SandBox.clone();
Resultats de retorn:
- SandBox, ha copiat una nova caixa de proves
freeze
Congela la caixa de sorra actual i la caixa de sorra congelada.globalEls canvis fets seran ignorats
1SandBox.freeze();
run
executar un script
1SandBox.run(String fname);
Paràmetres de trucada:
- fname: String, especifica el camí de l'script que s'ha d'executar. Aquest camí no té res a veure amb l'script que s'executa actualment i ha de ser un camí absolut.
resolve
Consulteu un mòdul i retorneu el nom complet del fitxer del mòdul
1
2String SandBox.resolve(String id,
String base);
Paràmetres de trucada:
- id: String, especifica el nom del mòdul que es carregarà
- base: Cadena, especifiqueu el camí de cerca
Resultats de retorn:
- String, retorna el nom complet del fitxer del mòdul carregat
require
Carrega un mòdul i retorna l'objecte mòdul
1
2Value SandBox.require(String id,
String base);
Paràmetres de trucada:
- id: String, especifica el nom del mòdul que es carregarà
- base: Cadena, especifiqueu el camí de cerca
Resultats de retorn:
- Value, retorna l'objecte mòdul carregat
setModuleCompiler
Afegiu un compilador a l'extname especificat. L'extname no pot ser una extensió integrada del sistema (incloent-hi {'.js', '.json', '.jsc', '.wasm'}), el compilador ha de retornar un script javascript vàlid.
1
2SandBox.setModuleCompiler(String extname,
Function compiler);
Paràmetres de trucada:
- extname: Cadena, l'extname especificat ha de començar per '.' i és una extensió integrada que no és del sistema.
- compiler: Funció, funció de devolució de trucada de compilació, tots els fitxers amb extname només requeriran una vegada. El format de la funció de devolució de trucada és
compiler(buf, requireInfo)
, buf és el fitxer de lecturaBuffer, l'estructura requireInfo és{filename: string}
.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22var vm = require('vm');
var sbox = new vm.SandBox({});
// compile ts to js and load
sbox.setModuleCompiler('.ts', tsCompiler);
var mod_ts = sbox.require('./a.ts');
// compile coffee to js and load
sbox.setModuleCompiler('.coffee', cafeCompiler);
var mod_coffee = sbox.require('./a.coffee');
// compile jsx to js and load
sbox.setModuleCompiler('.jsx', reactCompiler);
var mod_react = sbox.require('./a.jsx');
// compile yaml to rest and load
sbox.setModuleCompiler('.yml', yaml2Rest)
sbox.setModuleCompiler('.yaml', yaml2Rest)
// compile markdown to html and load
sbox.setModuleCompiler('.md', mdCompiler)
sbox.setModuleCompiler('.markdown', mdCompiler)
toString
Retorna la representació de cadena de l'objecte. En general, es retorna "[Objecte natiu]". L'objecte es pot tornar a implementar segons les seves pròpies característiques.
1String SandBox.toString();
Resultats de retorn:
- String, retorna la representació de cadena de l'objecte
toJSON
Retorna una representació en format JSON de l'objecte, generalment retornant una col·lecció de propietats llegibles definides per l'objecte.
1Value SandBox.toJSON(String key = "");
Paràmetres de trucada:
- key: Corda, no utilitzada
Resultats de retorn:
- Value, retorna un valor que conté JSON serializable