这是一个快速应用程序,我使用CodeMirror来允许学生程序员在美化的textarea中编写代码。我正在使用eval()来评估该代码,以便我可以为它们输出结果。使用socket.io将此结果传递给服务器,然后返回到客户端。
var codeInput = editor.getValue();
var result = eval(codeInput);
socket.emit('sendResult', result);
这样安全吗?这是否会影响我的应用程序的安全性,而不仅仅是发送用户提交的用户名或密码或电子邮件?
答案 0 :(得分:0)
不正确使用eval会打开你的应用程序注入攻击我想这将是主要问题。简而言之,是的,您的应用程序的安全性肯定会因使用eval而受到损害。
此外,调试起来会更加困难,因为你没有线号的可见性,性能也是最重要的。
出于兴趣,你有没有探索过任何其他途径?
答案 1 :(得分:0)
在没有额外保护的情况下,这会明确地在服务器上托管的(大部分)应用程序中创建reflected cross-site scripting vulnerability 。
如果除了网站上托管的静态内容之外没有其他任何内容,并且您可以保证网站上不会有任何其他内容,那么您只需要担心对结果进行了哪些处理(正确转义内容)在将其提交到存储之前,在显示内容之前正确转义内容。)
即。这应该有一个专用的虚拟名称。
答案 2 :(得分:0)
根据执行eval的上下文,它可能非常危险。
快速妥协可能在沙盒IFrame中执行eval 。
Here一个简单的例子,其中
window.localStorage['sekrit']
仅使用" allow-scripts"执行;权限(sandbox =" allow-scripts")。
我认为您可以在该页来源找到您所需的一切。
可以找到更多详细信息和其他权限列表in this article.
答案 3 :(得分:-2)