Obxecto obxecto incorporado

ObjectSandBox

Obxecto sandbox illado, usado para xestionar un espazo de execución independente

Todo o código execútase na súa propia caixa de probas. O requisito global chamará á caixa de probas actual para cargar o módulo, e a caixa de probas pasarase á caixa de probas cargada mediante require. O seguinte exemplo crea unha caixa de probas que restrinxe o acceso só aos módulos básicos globais.assertmódulo e engade dous módulos personalizados a e b:

1 2 3 4 5 6 7 8
var vm = require('vm'); var sbox = new vm.SandBox({ a: 100, b: 200, assert: require('assert') }); var mod_in_sbox = sbox.require('./path/to/mod');

Cómpre sinalar que SandBox non é unha caixa de probas de seguridade a proba de ataques. SandBox é só un espazo de execución independente que se pode usar para illar códigos diferentes e evitar interferencias mutuas, pero non pode evitar códigos maliciosos.

relación de herdanza

Construtor

SandBox

Constrúe un novo obxecto sandbox de illamento e inicialice o módulo básico

1
new SandBox(Object mods = {});

Parámetros de chamada:

  • mods: Obxecto, especifica o dicionario de obxectos do módulo que se vai engadir

Constrúe un novo obxecto sandbox de illamento e inicialice o módulo básico

1 2
new SandBox(Object mods, Function require);

Parámetros de chamada:

  • mods: Obxecto, especifica o dicionario de obxectos do módulo que se vai engadir
  • require: Función, unha función de requirimento personalizada. Cando o módulo non existe, a función personalizada chámase primeiro, sen retorno, e despois cárgase desde o ficheiro.

Constrúe un novo obxecto independente de illamento global e inicialice o módulo básico

1 2
new SandBox(Object mods, Object global);

Parámetros de chamada:

  • mods: Obxecto, especifica o dicionario de obxectos do módulo que se vai engadir
  • global: Obxecto, especifica a propiedade global inicializada

Constrúe un novo obxecto independente de illamento global e inicialice o módulo básico

1 2 3
new SandBox(Object mods, Function require, Object global);

Parámetros de chamada:

  • mods: Obxecto, especifica o dicionario de obxectos do módulo que se vai engadir
  • require: Función, unha función de requirimento personalizada. Cando o módulo non existe, a función personalizada chámase primeiro, sen retorno, e despois cárgase desde o ficheiro.
  • global: Obxecto, especifica a propiedade global inicializada

propiedades dos membros

global

Obxecto, consulta sandboxglobalobxecto

1
readonly Object SandBox.global;

modules

Obxecto, consulta o obxecto dicionario de todos os módulos existentes no sandbox

1
readonly Object SandBox.modules;

función de membro

addBuiltinModules

Engade módulos básicos integrados ao sandbox

1
SandBox.addBuiltinModules();

add

Engade un módulo base ao sandbox

1 2
SandBox.add(String id, Value mod);

Parámetros de chamada:

  • id: Cadea, especifica o nome do módulo que se vai engadir. Este camiño non ten nada que ver co script en execución. Debe ser un camiño absoluto ou un nome de módulo.
  • mod: Valor, especifica o obxecto do módulo que se vai engadir

Engade un conxunto de módulos básicos ao sandbox

1
SandBox.add(Object mods);

Parámetros de chamada:

  • mods: Obxecto, especifica o dicionario de obxectos do módulo que se engadirá. O módulo javascript engadido xerará unha copia para evitar interferencias mutuas entre os obxectos de modificación do sandbox.

addScript

Engade un módulo de script ao sandbox

1 2
Value SandBox.addScript(String srcname, Buffer script);

Parámetros de chamada:

  • srcname: String, especifica o nome do script que se vai engadir, srcname debe incluír a extensión, comojsonOu js, jsc
  • script:Buffer, especifica o código binario que se vai engadir

Resultados de devolución:

  • Value, devolve o obxecto do módulo cargado

remove

Elimina o módulo base especificado da caixa de probas

1
SandBox.remove(String id);

Parámetros de chamada:

  • id: Cadea, especifica o nome do módulo que se vai eliminar. Este camiño non ten nada que ver co script en execución. Debe ser un camiño absoluto ou un nome de módulo.

has

Detecta se o módulo básico existe desde o sandbox

1
Boolean SandBox.has(String id);

Parámetros de chamada:

  • id: Cadea, especifica o nome do módulo que se vai detectar. Este camiño non ten nada que ver co script en execución. Debe ser un camiño absoluto ou un nome de módulo.

Resultados de devolución:

  • Boolean, existe

clone

Copia o sandbox actual. O novo sandbox contén os módulos do mesmo nome e require unha función.

1
SandBox SandBox.clone();

Resultados de devolución:

  • SandBox, copiouse un novo sandbox

freeze

Conxela a caixa de area actual e a caixa de area conxelada.globalOs cambios realizados serán ignorados

1
SandBox.freeze();

run

executar un script

1
SandBox.run(String fname);

Parámetros de chamada:

  • fname: Cadea, especifica o camiño do script que se vai executar. Este camiño non ten nada que ver co script en execución e debe ser un camiño absoluto.

resolve

Consulta un módulo e devolve o nome de ficheiro completo do módulo

1 2
String SandBox.resolve(String id, String base);

Parámetros de chamada:

  • id: String, especifica o nome do módulo que se vai cargar
  • base: Cadea, especifique a ruta de busca

Resultados de devolución:

  • String, devolve o nome completo do ficheiro do módulo cargado

require

Carga un módulo e devolve o obxecto módulo

1 2
Value SandBox.require(String id, String base);

Parámetros de chamada:

  • id: String, especifica o nome do módulo que se vai cargar
  • base: Cadea, especifique a ruta de busca

Resultados de devolución:

  • Value, devolve o obxecto do módulo cargado

setModuleCompiler

Engade un compilador ao extname especificado. O extname non pode ser unha extensión integrada do sistema (incluíndo {'.js', '.json', '.jsc', '.wasm'}), o compilador debe devolver un script javascript válido.

1 2
SandBox.setModuleCompiler(String extname, Function compiler);

Parámetros de chamada:

  • extname: Cadea, o extname especificado debe comezar por '.' e é unha extensión integrada non integrada no sistema.
  • compiler: Función, función de devolución de chamada de compilación, todos os ficheiros con extname só precisarán unha vez. O formato da función de devolución de chamada é compiler(buf, requireInfo), buf é o ficheiro de lecturaBuffer, a estrutura requireInfo é {filename: string}.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
var 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

Devolve a representación en cadea do obxecto. Polo xeral, devólvese "[Obxecto nativo]". O obxecto pódese volver implementar segundo as súas propias características.

1
String SandBox.toString();

Resultados de devolución:

  • String, devolve a representación en cadea do obxecto

toJSON

Devolve unha representación en formato JSON do obxecto, devolvendo xeralmente unha colección de propiedades lexibles definidas polo obxecto.

1
Value SandBox.toJSON(String key = "");

Parámetros de chamada:

  • key: Cadena, non usada

Resultados de devolución:

  • Value, devolve un valor que contén JSON serializable