首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用eval()来评估学生程序员代码。安全漏洞?

使用eval()来评估学生程序员代码。安全漏洞?
EN

Stack Overflow用户
提问于 2016-09-09 16:05:11
回答 4查看 142关注 0票数 1

这是一个快速应用程序,我正在使用CodeMirror,允许学生程序员在一个美化的文本区域编写代码。我使用eval()来计算该代码,以便为它们输出一个结果。此结果将使用socket.io传递给服务器,然后返回给客户端。

代码语言:javascript
复制
var codeInput = editor.getValue();
var result = eval(codeInput);
socket.emit('sendResult', result);

这个安全吗?这是否比发送用户提交的用户名、密码或电子邮件更有损于我的应用程序的安全性?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-09-09 16:19:28

在没有附加保护的情况下,通过设计在服务器上托管的(大部分) 反映的跨站点脚本漏洞中显式地创建一个applIcations。

如果站点上除了静态内容之外没有其他任何内容,而且您可以保证站点上不会有任何其他内容,那么您只需要担心对结果做了什么处理(在将内容提交到存储之前正确地转义内容,在显示结果之前正确地转义内容)。

也就是说,这应该有一个专用的vhost名称。

票数 0
EN

Stack Overflow用户

发布于 2016-09-09 16:11:04

如果不正确地使用eval,您的应用程序可能会受到注入攻击,我想这将是主要的问题。所以简单地说,是的,你的应用程序的安全性肯定会因为使用eval而受到损害。

此外,调试将更加困难,因为您将没有行号的可见性,性能也在此之上。

出于兴趣,你有没有探索过其他的途径?

票数 0
EN

Stack Overflow用户

发布于 2016-09-10 23:44:09

基于执行eval的上下文,它可能非常危险。

一个快速的折衷方案可能是在沙箱内的IFrame中执行eval。

这里一个简单的例子,其中

代码语言:javascript
复制
window.localStorage['sekrit']

只使用“允许-脚本”权限(sandbox=“允许-脚本”)执行。

我认为您需要的全部内容都可以在源代码页面中找到。

更多详细信息和其他权限列表可以找到在本文中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39415615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档