javascript / expert
Snippet
Sicheres Sandboxing mit node:vm
Das Modul 'node:vm' ermöglicht das Kompilieren und Ausführen von Code in einem separaten V8-Virtual-Machine-Kontext. Dies ist entscheidend für die Ausführung nicht vertrauenswürdiger Skripte oder die Erstellung von Plugin-Systemen, bei denen der globale Scope des ausgeführten Codes von der Hauptanwendung isoliert werden muss.
snippet.js
1
2
3
4
5
6
7
8
9
10
import vm from 'node:vm';const sandbox = { externalData: 10, result: 0 };vm.createContext(sandbox);const code = 'result = externalData * 2; var internal = 5;';vm.runInContext(code, sandbox);console.log(sandbox.result); // 20console.log(sandbox.internal); // 5
nodejs
Erklärung
1
vm.createContext(sandbox);
Konvertiert das Objekt in einen globalen Kontext für die Virtual Machine.
2
vm.runInContext(code, sandbox);
Führt den String als JavaScript-Code innerhalb des bereitgestellten Sandbox-Kontexts aus.