Objet objet intégré

ObjetSandBox

Objet sandbox isolé, utilisé pour gérer un espace d'exécution indépendant

Tout le code s'exécute dans son propre bac à sable. Le require global appellera le bac à sable actuel pour charger le module, et le bac à sable sera transmis au bac à sable chargé via require. L'exemple suivant crée un bac à sable qui restreint l'accès aux seuls modules de base globaux.assertmodule et ajoutez deux modules personnalisés a et 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');

Il convient de noter que SandBox n'est pas un bac à sable de sécurité à l'épreuve des attaques. SandBox est simplement un espace d'exécution indépendant qui peut être utilisé pour isoler différents codes et éviter les interférences mutuelles, mais il ne peut pas empêcher les codes malveillants.

relation d'héritage

Constructeur

SandBox

Construisez un nouvel objet sandbox d'isolation et initialisez le module de base

1
new SandBox(Object mods = {});

Paramètres d'appel :

  • mods: Objet, spécifie le dictionnaire d'objets du module à ajouter

Construisez un nouvel objet sandbox d'isolation et initialisez le module de base

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

Paramètres d'appel :

  • mods: Objet, spécifie le dictionnaire d'objets du module à ajouter
  • require: Fonction, une fonction require personnalisée. Lorsque le module n'existe pas, la fonction personnalisée est d'abord appelée, sans retour, puis chargée à partir du fichier.

Construire un nouvel objet sandbox d'isolation global indépendant et initialiser le module de base

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

Paramètres d'appel :

  • mods: Objet, spécifie le dictionnaire d'objets du module à ajouter
  • global: Objet, spécifie la propriété Globale initialisée

Construire un nouvel objet sandbox d'isolation global indépendant et initialiser le module de base

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

Paramètres d'appel :

  • mods: Objet, spécifie le dictionnaire d'objets du module à ajouter
  • require: Fonction, une fonction require personnalisée. Lorsque le module n'existe pas, la fonction personnalisée est d'abord appelée, sans retour, puis chargée à partir du fichier.
  • global: Objet, spécifie la propriété Globale initialisée

propriétés des membres

global

Objet, bac à sable de requêteglobalobjet

1
readonly Object SandBox.global;

modules

Objet, interrogez l'objet dictionnaire de tous les modules existants dans le bac à sable

1
readonly Object SandBox.modules;

fonction membre

addBuiltinModules

Ajouter des modules de base intégrés au bac à sable

1
SandBox.addBuiltinModules();

add

Ajouter un module de base au bac à sable

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

Paramètres d'appel :

  • id: String, spécifie le nom du module à ajouter. Ce chemin n'a rien à voir avec le script en cours d'exécution. Il doit s'agir d'un chemin absolu ou d'un nom de module.
  • mod: Valeur, spécifie l'objet module à ajouter

Ajouter un ensemble de modules de base au bac à sable

1
SandBox.add(Object mods);

Paramètres d'appel :

  • mods: Objet, spécifie le dictionnaire d'objets du module à ajouter. Le module javascript ajouté générera une copie pour éviter les interférences mutuelles entre les objets de modification du bac à sable.

addScript

Ajouter un module de script au bac à sable

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

Paramètres d'appel :

  • srcname: String, spécifie le nom du script à ajouter, srcname doit inclure l'extension, telle quejsonOu js, jsc
  • script:Buffer, précise le code binaire à ajouter

Résultats de retour :

  • Value, renvoie l'objet module chargé

remove

Supprime le module de base spécifié du bac à sable

1
SandBox.remove(String id);

Paramètres d'appel :

  • id: String, spécifie le nom du module à supprimer. Ce chemin n'a rien à voir avec le script en cours d'exécution. Il doit s'agir d'un chemin absolu ou d'un nom de module.

has

Détecter si le module de base existe depuis le bac à sable

1
Boolean SandBox.has(String id);

Paramètres d'appel :

  • id: String, spécifie le nom du module à détecter. Ce chemin n'a rien à voir avec le script en cours d'exécution. Il doit s'agir d'un chemin absolu ou d'un nom de module.

Résultats de retour :

  • Boolean, est-ce que ça existe

clone

Copiez le bac à sable actuel. Le nouveau bac à sable contient les modules du bac à sable actuel avec le même nom et la même fonction.

1
SandBox SandBox.clone();

Résultats de retour :

  • SandBox, copié le nouveau bac à sable

freeze

Gelez le bac à sable actuel et le bac à sable gelé.globalLes modifications apportées seront ignorées

1
SandBox.freeze();

run

exécuter un script

1
SandBox.run(String fname);

Paramètres d'appel :

  • fname: String,spécifie le chemin du script à exécuter. Ce chemin n'a rien à voir avec le script en cours d'exécution et doit être un chemin absolu.

resolve

Interroge un module et renvoie le nom de fichier complet du module

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

Paramètres d'appel :

  • id: String, précise le nom du module à charger
  • base : String, spécifiez le chemin de recherche

Résultats de retour :

  • String, renvoie le nom de fichier complet du module chargé

require

Charge un module et renvoie l'objet module

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

Paramètres d'appel :

  • id: String, précise le nom du module à charger
  • base : String, spécifiez le chemin de recherche

Résultats de retour :

  • Value, renvoie l'objet module chargé

setModuleCompiler

Ajoutez un compilateur au nom d'extension spécifié. Le nom d'ext ne peut pas être une extension intégrée au système (y compris {'.js', '.json', '.jsc', '.wasm'}), le compilateur doit renvoyer un script javascript valide.

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

Paramètres d'appel :

  • extname: String, le nom d'extension spécifié doit commencer par '.' et est une extension non intégrée au système.
  • compiler: Fonction, fonction de rappel de compilation, tous les fichiers avec un nom d'extension n'en nécessiteront qu'une seule fois. Le format de la fonction de rappel est compiler(buf, requireInfo), buf est le fichier luBuffer, la structure requireInfo est {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

Renvoie la représentation sous forme de chaîne de l'objet. Généralement, "[Native Object]" est renvoyé. L'objet peut être réimplémenté en fonction de ses propres caractéristiques.

1
String SandBox.toString();

Résultats de retour :

  • String, renvoie la représentation sous forme de chaîne de l'objet

toJSON

Renvoie une représentation au format JSON de l'objet, renvoyant généralement une collection de propriétés lisibles définies par l'objet.

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

Paramètres d'appel :

  • key: Chaîne, non utilisée

Résultats de retour :

  • Value, renvoie une valeur contenant du JSON sérialisable