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 print utility methods
  • 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 JS
s.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 Messaging
s.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);

 

相关文章:

  • 2022-12-23
  • 2021-04-27
  • 2021-09-01
  • 2022-12-23
  • 2022-12-23
  • 2021-11-29
  • 2021-10-17
  • 2021-11-12
猜你喜欢
  • 2021-10-09
  • 2022-12-23
  • 2021-12-31
  • 2021-08-29
  • 2022-01-14
  • 2021-06-26
  • 2022-12-23
相关资源
相似解决方案