这是一个快速应用程序,我使用 CodeMirror 来允许学生程序员在美化的文本区域中编写代码。我使用 eval() 来评估该代码,以便我可以为它们输出结果。这个结果使用socket.io传递给服务器,然后返回给客户端。
var codeInput = editor.getValue();
var result = eval(codeInput);
socket.emit('sendResult', result);
使用起来安全吗?这是否比发送用户提交的用户名、密码或电子邮件更会损害我的应用程序的安全性?
最佳答案
在没有额外保护的情况下,这会显式创建 reflected cross-site scripting vulnerability在(大多数)服务器上托管的应用程序中有意。
如果网站上除了托管静态内容之外没有其他内容,并且您可以保证网站上永远不会有任何其他内容,那么您只需担心对结果进行了哪些处理(在将内容提交到存储之前正确转义内容,在显示内容之前正确转义内容)。
即这应该有一个专用的虚拟主机名称。
关于javascript - 使用 eval() 评估学生程序员的代码。安全漏洞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39415615/