OggettoSandBox
Oggetto sandbox isolato, utilizzato per gestire uno spazio di corsa indipendente
Tutto il codice viene eseguito nella propria sandbox. Il require globale chiamerà la sandbox corrente per caricare il modulo e la sandbox verrà passata alla sandbox caricata tramite require. L'esempio seguente crea una sandbox che limita l'accesso solo ai moduli di base globali.assertmodule e aggiungi due moduli personalizzati a e 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');
Va notato che SandBox non è un sandbox di sicurezza a prova di attacco, ma è semplicemente uno spazio di esecuzione indipendente che può essere utilizzato per isolare codici diversi ed evitare interferenze reciproche, ma non può prevenire codice dannoso.
rapporto ereditario
Costruttore
SandBox
Costruisci un nuovo oggetto sandbox di isolamento e inizializza il modulo base
1new SandBox(Object mods = {});
Parametri di chiamata:
- mods: Oggetto, specifica il dizionario degli oggetti del modulo da aggiungere
Costruisci un nuovo oggetto sandbox di isolamento e inizializza il modulo base
1
2new SandBox(Object mods,
Function require);
Parametri di chiamata:
- mods: Oggetto, specifica il dizionario degli oggetti del modulo da aggiungere
- require: Funzione, una funzione di richiesta personalizzata.Quando il modulo non esiste, la funzione personalizzata viene prima chiamata, senza ritorno, e quindi caricata dal file.
Costruisci un nuovo oggetto sandbox di isolamento globale indipendente e inizializza il modulo di base
1
2new SandBox(Object mods,
Object global);
Parametri di chiamata:
- mods: Oggetto, specifica il dizionario degli oggetti del modulo da aggiungere
- global: Oggetto, specifica la proprietà globale inizializzata
Costruisci un nuovo oggetto sandbox di isolamento globale indipendente e inizializza il modulo di base
1
2
3new SandBox(Object mods,
Function require,
Object global);
Parametri di chiamata:
- mods: Oggetto, specifica il dizionario degli oggetti del modulo da aggiungere
- require: Funzione, una funzione di richiesta personalizzata.Quando il modulo non esiste, la funzione personalizzata viene prima chiamata, senza ritorno, e quindi caricata dal file.
- global: Oggetto, specifica la proprietà globale inizializzata
proprietà dei membri
global
Oggetto, query sandboxglobaloggetto
1readonly Object SandBox.global;
modules
Oggetto, interroga l'oggetto dizionario di tutti i moduli esistenti nella sandbox
1readonly Object SandBox.modules;
funzione membro
addBuiltinModules
Aggiungi moduli base integrati alla sandbox
1SandBox.addBuiltinModules();
add
Aggiungi un modulo base alla sandbox
1
2SandBox.add(String id,
Value mod);
Parametri di chiamata:
- id: String, specifica il nome del modulo da aggiungere. Questo percorso non ha nulla a che fare con lo script attualmente in esecuzione. Deve essere un percorso assoluto o un nome di modulo.
- mod: Valore, specifica l'oggetto modulo da aggiungere
Aggiungi una serie di moduli base alla sandbox
1SandBox.add(Object mods);
Parametri di chiamata:
- mods: Oggetto, specifica il dizionario degli oggetti del modulo da aggiungere. Il modulo javascript aggiunto genererà una copia per evitare interferenze reciproche tra gli oggetti di modifica del sandbox.
addScript
Aggiungi un modulo di script alla sandbox
1
2Value SandBox.addScript(String srcname,
Buffer script);
Parametri di chiamata:
- srcname: String, specifica il nome dello script da aggiungere, srcname deve includere l'estensione, ad esempiojsonOppure js, jsc
- script:Buffer, specifica il codice binario da aggiungere
Risultati restituiti:
- Value, restituisce l'oggetto modulo caricato
remove
Rimuove il modulo base specificato dalla sandbox
1SandBox.remove(String id);
Parametri di chiamata:
- id: String, specifica il nome del modulo da eliminare. Questo percorso non ha nulla a che fare con lo script attualmente in esecuzione. Deve essere un percorso assoluto o un nome di modulo.
has
Rileva se il modulo base esiste dalla sandbox
1Boolean SandBox.has(String id);
Parametri di chiamata:
- id: String, specifica il nome del modulo da rilevare. Questo percorso non ha nulla a che fare con lo script attualmente in esecuzione. Deve essere un percorso assoluto o un nome di modulo.
Risultati restituiti:
- Boolean, esiste
clone
Copia la sandbox corrente. La nuova sandbox contiene i moduli della sandbox corrente con lo stesso nome e la funzione richiesta.
1SandBox SandBox.clone();
Risultati restituiti:
- SandBox, copiato il nuovo sandbox
freeze
Congela il sandbox corrente e il sandbox congelato.globalLe modifiche apportate verranno ignorate
1SandBox.freeze();
run
eseguire uno script
1SandBox.run(String fname);
Parametri di chiamata:
- fname: String, specifica il percorso dello script da eseguire. Questo percorso non ha nulla a che fare con lo script attualmente in esecuzione e deve essere un percorso assoluto.
resolve
Interroga un modulo e restituisce il nome file completo del modulo
1
2String SandBox.resolve(String id,
String base);
Parametri di chiamata:
- id: String, specifica il nome del modulo da caricare
- base: Stringa, specifica il percorso di ricerca
Risultati restituiti:
- String, restituisce il nome file completo del modulo caricato
require
Carica un modulo e restituisce l'oggetto modulo
1
2Value SandBox.require(String id,
String base);
Parametri di chiamata:
- id: String, specifica il nome del modulo da caricare
- base: Stringa, specifica il percorso di ricerca
Risultati restituiti:
- Value, restituisce l'oggetto modulo caricato
setModuleCompiler
Aggiungi un compilatore al nome ext specificato. Il nome ext non può essere un'estensione incorporata nel sistema (inclusi {'.js', '.json', '.jsc', '.wasm'}), il compilatore deve restituire uno script javascript valido.
1
2SandBox.setModuleCompiler(String extname,
Function compiler);
Parametri di chiamata:
- extname: String, l'extname specificato deve iniziare con "." ed è un'estensione incorporata non di sistema.
- compiler: Funzione, funzione di callback di compilazione, tutti i file con extname richiederanno solo una volta. Il formato della funzione di callback è
compiler(buf, requireInfo)
, buf è il file lettoBuffer, la struttura requireInfo è{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
Restituisce la rappresentazione in formato stringa dell'oggetto. Generalmente viene restituito "[Oggetto nativo]". L'oggetto può essere reimplementato in base alle proprie caratteristiche.
1String SandBox.toString();
Risultati restituiti:
- String, restituisce la rappresentazione di stringa dell'oggetto
toJSON
Restituisce una rappresentazione in formato JSON dell'oggetto, generalmente restituendo una raccolta di proprietà leggibili definite dall'oggetto.
1Value SandBox.toJSON(String key = "");
Parametri di chiamata:
- key: Stringa, non utilizzata
Risultati restituiti:
- Value, restituisce un valore contenente JSON serializzabile