用途
https://github.com/gf3/sandbox
- Can be used to execute untrusted code.
- Support for timeouts (e.g. prevent infinite loops)
- Support for memory errors (and memory errors)
- Handles errors gracefully
- Restricted code (cannot access node.js methods)
- Supports
console.log
and- Supports interprocess messaging with the sandboxed code
例子
https://github.com/gf3/sandbox/blob/master/example/example.js
var Sandbox = require("../lib/sandbox")
, s = new Sandbox()// Example 1 - Standard JSs.run( "1 + 1", function( output ) { console.log( "Example 1: " + output.result + "\n" )})
通信
箱内和向外相互通信。
Sandboxed code:
onmessage = function(message){ if (message === 'hello from outside') { postMessage('hello from inside'); } };
Sandbox:
var sandbox = new Sandbox();sandbox.run(sandboxed_code);sandbox.on('message', function(message){ // Handle message sent from the inside // In this example message will be 'hello from inside'});sandbox.postMessage('hello from outside');
// Example 11 - IPC Messagings.run( "onmessage = function(message){ if (message === 'hello from outside') { postMessage('hello from inside'); };", function(output){ })s.on('message', function(message){ console.log("Example 11: received message sent from inside the sandbox '" + message + "'\n")});var test_message = "hello from outside";console.log("Example 11: sending message into the sandbox '" + test_message + "'");s.postMessage(test_message);