当前位置: 首页 > 面试题库 >

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

隆选
2023-03-14
问题内容

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

这个简短的脚本演示了原理:http :
//jsfiddle.net/KMURe/,您可以将onScript函数视为套接字侦听器。

我可以采用哪些安全协议来确保该交易的安全性?安全的网络套接字渠道是否会使第三方难以充当中间人(在将代码发送给客户端之前更改代码)?

一些用例..

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

问题答案:

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

但是,如果确实需要,则可以通过"use strict"command使用严格模式。当
eval()在严格函数中执行时,eval的内容不会在即时范围内泄漏。评估中的代码将包含在eval()自身中(就像它具有自己的作用域一样)。在演示中,尝试删除尾部xeval()返回undefined

但是,使用仍然eval()很危险。最好是使用自定义字符串命令(如将在客户端进行解析)找到JSON之类的替代方法。



 类似资料:
  • 问题内容: 我想制作一个可以在本地运行其他人代码的Web服务…当然,我想将他们的代码访问权限限制在某些“沙盒”目录下,并且他们将无法连接到服务器的其他部分(数据库,主数据库网络服务器等) 最好的方法是什么? 运行VMware / Virtualbox: (+)我想它是一样安全的..即使有人设法“入侵” ..他们只入侵来宾计算机 (+)可以限制进程使用的CPU和内存 (+)易于设置..只需创建虚拟机

  • 当前,我已经在Express API上为服务器发送的事件设置了一个endpoint,当我从cmd调用endpoint时,使用http://localhost:3000/v1/devices,我得到了流,但当我使用新事件源从Vue应用程序调用endpoint时('http://localhost:3000/v1/devices“)但它只会继续加载,而不会流式传输任何数据。是否有我目前没有做的事情要做

  • 问题内容: 我有一个由Jetty驱动的网站。 我想使网站密码受保护(或类似)。 有没有一种方法可以通过单独配置来实现(无需触摸代码)。 所有帮助,不胜感激。 担 问题答案: 一种方法是通过为应用程序设置基本身份验证。仅当您使用ssl时才应执行此操作,但是没有ssl的登录仍然不安全,因此我想您已经拥有了。 在Jetty中有很多方法可以做到这一点,但这只是其中之一。 首先,您必须定义一个领域,在其中定

  • Navicat 为你的服务器提供安全性管理工具。你可以新建、编辑、删除用户、授予或撤消在已选择的数据库及它们的数据库对象的权限。点击 来打开 用户 的对象列表。对象列表窗格显示全部存在于服务器中的用户。

  • 问题内容: 只是知道,是否可以通过Ajax请求安全地发送密码? 我有一个登录框,它调用ajax请求来尝试登录/传递并检索带有错误(如果有)的JSON对象。 我应该改用表单重定向吗? [编辑] 将加密的密码存储在数据库中不是解决方案,因为ajax发送的登录名和密码是访问数据库本身(内部应用程序)的登录名/密码。 问题答案: 发送第三方无法拦截的内容的唯一方法是使用HTTPS而不是常规HTTP。这样,

  • 我正在使用Html5、Java脚本、ajax和Java。我正在上传一个图像从桌面到作物,作物后,它是显示在同一页的引导模式。但是我没有得到这个图像的URL,我得到了一些Base64代码,当我发送这个Base64代码时,它没有工作。 我看到了这篇文章,但我没有从这个链接中得到任何解决方案:https://stackoverflow.com/ 此代码为静态图像,首次显示. 我将result.ToDat