在服务器发送的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()
本身中(就像它有自己的作用域一样)。 在演示中 ,尝试删除尾部的x
和eval()
将返回undefined
。
但是,仍然使用eval()
是危险的。 最好是,如果你find像JSON这样的替代scheme,可以使用自定义的string命令来parsing客户端。