Встроенный объект объекта

ОбъектSandBox

Изолированный объект песочницы, используемый для управления независимым рабочим пространством.

Весь код выполняется в собственной песочнице. Глобальная команда require вызовет текущую песочницу для загрузки модуля, а песочница будет передана в загруженную песочницу через require. В следующем примере создается песочница, которая ограничивает доступ только к глобальным базовым модулям.assertмодуль и добавьте два пользовательских модуля a и 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');

Следует отметить, что SandBox не является защищенной от атак изолированной программной средой. SandBox — это просто независимое рабочее пространство, которое можно использовать для изоляции различных кодов и предотвращения взаимного вмешательства, но оно не может предотвратить вредоносный код.

отношения наследства

Конструктор

SandBox

Создайте новый объект изолированной изолированной программной среды и инициализируйте базовый модуль.

1
new SandBox(Object mods = {});

Параметры звонка:

  • mods: Object, указывает добавляемый словарь объектов модуля.

Создайте новый объект изолированной изолированной программной среды и инициализируйте базовый модуль.

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

Параметры звонка:

  • mods: Object, указывает добавляемый словарь объектов модуля.
  • require: Функция, пользовательская функция require.Когда модуль не существует, сначала вызывается пользовательская функция без возврата, а затем загружается из файла.

Создайте новый независимый объект песочницы глобальной изоляции и инициализируйте базовый модуль.

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

Параметры звонка:

  • mods: Object, указывает добавляемый словарь объектов модуля.
  • global: Объект, определяет инициализированное глобальное свойство.

Создайте новый независимый объект песочницы глобальной изоляции и инициализируйте базовый модуль.

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

Параметры звонка:

  • mods: Object, указывает добавляемый словарь объектов модуля.
  • require: Функция, пользовательская функция require.Когда модуль не существует, сначала вызывается пользовательская функция без возврата, а затем загружается из файла.
  • global: Объект, определяет инициализированное глобальное свойство.

свойства члена

global

Объект, песочница запросаglobalобъект

1
readonly Object SandBox.global;

modules

Object, запросить объект словаря всех существующих модулей в песочнице.

1
readonly Object SandBox.modules;

функция-член

addBuiltinModules

Добавьте в песочницу встроенные базовые модули

1
SandBox.addBuiltinModules();

add

Добавьте базовый модуль в песочницу

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

Параметры звонка:

  • id: строка, указывает имя добавляемого модуля. Этот путь не имеет ничего общего с запущенным в данный момент скриптом. Это должен быть абсолютный путь или имя модуля.
  • mod: Значение, указывает добавляемый объект модуля.

Добавьте в песочницу набор базовых модулей

1
SandBox.add(Object mods);

Параметры звонка:

  • mods: Object, указывает добавляемый словарь объектов модуля.Добавленный модуль javascript создаст копию, чтобы избежать взаимного вмешательства между объектами модификации песочницы.

addScript

Добавьте модуль скрипта в песочницу

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

Параметры звонка:

  • srcname: строка, указывает имя добавляемого скрипта, srcname должно включать расширение, напримерjsonИли js, jsc
  • script:Buffer, указывает добавляемый двоичный код

Результаты возврата:

  • Value, возвращает загруженный объект модуля

remove

Удаляет указанный базовый модуль из песочницы.

1
SandBox.remove(String id);

Параметры звонка:

  • id: строка, указывает имя удаляемого модуля. Этот путь не имеет ничего общего с запущенным в данный момент скриптом. Это должен быть абсолютный путь или имя модуля.

has

Определить, существует ли базовый модуль из песочницы

1
Boolean SandBox.has(String id);

Параметры звонка:

  • id: строка, указывает имя обнаруживаемого модуля. Этот путь не имеет ничего общего с запущенным в данный момент скриптом. Это должен быть абсолютный путь или имя модуля.

Результаты возврата:

  • Boolean, существует ли оно

clone

Скопируйте текущую песочницу.Новая песочница содержит модули текущей песочницы с тем же именем и требуемой функцией.

1
SandBox SandBox.clone();

Результаты возврата:

  • SandBox, скопировал новую песочницу

freeze

Заморозить текущую песочницу и замороженную песочницу.globalВнесенные изменения будут игнорироваться.

1
SandBox.freeze();

run

запустить скрипт

1
SandBox.run(String fname);

Параметры звонка:

  • fname: строка, указывает путь к запускаемому сценарию. Этот путь не имеет ничего общего с выполняемым в данный момент сценарием и должен быть абсолютным путем.

resolve

Запросите модуль и верните полное имя файла модуля.

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

Параметры звонка:

  • id: строка, указывает имя загружаемого модуля.
  • base: Строка, укажите путь поиска

Результаты возврата:

  • String, возвращает полное имя файла загруженного модуля

require

Загружает модуль и возвращает объект модуля

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

Параметры звонка:

  • id: строка, указывает имя загружаемого модуля.
  • base: Строка, укажите путь поиска

Результаты возврата:

  • Value, возвращает загруженный объект модуля

setModuleCompiler

Добавьте компилятор к указанному расширению. Расширение не может быть встроенным расширением системы (включая {'.js', '.json', '.jsc', '.wasm'}), компилятору необходимо вернуть действительный сценарий JavaScript.

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

Параметры звонка:

  • extname: строка, указанное расширение должно начинаться с «.» и является несистемным встроенным расширением.
  • compiler: Функция, функция обратного вызова компиляции, все файлы с extname требуются только один раз.Формат функции обратного вызова compiler(buf, requireInfo): buf — прочитанный файл.Buffer, структура 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

Возвращает строковое представление объекта. Обычно возвращается «[Native Object]». Объект может быть повторно реализован в соответствии с его собственными характеристиками.

1
String SandBox.toString();

Результаты возврата:

  • String, возвращает строковое представление объекта

toJSON

Возвращает представление объекта в формате JSON, обычно возвращая коллекцию читаемых свойств, определенных объектом.

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

Параметры звонка:

  • key: Строка, не используется.

Результаты возврата:

  • Value, возвращает значение, содержащее сериализуемый JSON