在服务器发送的JavaScript代码上安全使用eval()

我正在使用Node.js和Socket.io。 我写了一个应用程序,可以从服务器发送JavaScript片段,并在客户端执行它们。 JavaScript通过Secure WebSocket(WSS)发送,客户端有一个监听器,它将执行通过服务器传递给它的任何代码。

这个简短的脚本演示了原理: http : //jsfiddle.net/KMURe/你可以把onScript函数想象成套接字监听器。

我可以使用哪些安全协议来保证交易安全? 一个安全的websocket通道是否会使第三方难以充当中间人(在将代码发送给客户端之前更改代码)?

一些用例

  • dynamic分配的分布式计算。
  • 浏览器客户端可以从服务器dynamic学习。
  • 一致更新浏览器行为。

eval() ,即使你有合法的使用,也是危险的。 你应该避免使用它不惜一切代价。 小心使用它。

但是,如果真的需要,那么可以通过"use strict"命令来使用严格模式。 在严格函数中执行eval() ,eval的内容不会在直接范围内泄漏。 eval中的代码将被包含在eval()本身中(就像它有自己的作用域一样)。 在演示中 ,尝试删除尾部的xeval()将返回undefined

但是,仍然使用eval()是危险的。 最好是,如果你find像JSON这样的替代scheme,可以使用自定义的string命令来parsing客户端。