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

标签 javascript node.js websocket

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

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

问题

我可以采用哪些安全协议(protocol)来确保此交易的安全?安全的 websocket channel 是否会使第三方难以充当中间人(在将代码发送到客户端之前更改代码)?

一些用例..

  • 动态分配的分布式计算。
  • 浏览器客户端可以动态向服务器学习。
  • 统一更新浏览器行为。

最佳答案

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

但是,如果确实需要,您可以通过 "use strict" command 使用严格模式.当eval() is executed in a strict function , eval 的内容不会在直接范围内泄漏。 eval 中的代码将是 contained in eval()本身(好像它有自己的范围)。 In the demo ,尝试删除尾随的 xeval() 将返回 undefined

但是,使用 eval() 仍然很危险。最好找到像 JSON 这样的替代方案,其中包含将在客户端解析的自定义字符串命令。

关于javascript - 在服务器发送的 JavaScript 代码上安全使用 eval(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10489874/

相关文章:

php - socket_recv 未收到完整数据

javascript - 如何在 JavaScript 中格式化连接的异常字符串

javascript - Angular Directive(指令)中的按钮不执行 ng-click 功能

node.js - 如何访问另一个模型 Mongoose 数据库中的一个模型架构

java - 无法通过nodeJs代码中制作的Java代码提取zip文件

PHP - 将 SSL 添加到 TCP 套接字时出现意外行为

javascript - Internet Explorer ECMAScript 的 Polyfill 设置构造函数以允许可迭代参数

javascript - scope.$watch 不会随哈希对象(关联数组)一起触发?

node.js - WebPack - 错误找不到 .src 文件夹

java - WebSocket 安全 Java 配置