当前位置:  开发笔记 > 编程语言 > 正文

使用eval()在JavaScript中执行用户输入的安全风险

如何解决《使用eval()在JavaScript中执行用户输入的安全风险》经验,为你挑选了2个好方法。

我打算为学生们整理一个快速的网页,教他们JavaScript编程.在这个页面上,我想给他们一个文本框,允许他们运行JavaScript,以便他们可以看到工作语言的动态特性.但是,我很清楚在用户输入上使用eval()通常是一个非常糟糕的主意.我发布这样的页面会带来什么样的安全风险?我应采取哪些措施来减轻这些风险?



1> Andrzej Doyl..:

您正在承担的安全风险是,您正在从用户那里获取输入并在您网站上的脚本环境中运行它.想象一下,如果你是一个恶意破解者,无论出于何种原因都有完全访问权限来修改网站上运行的JavaScript.您可以执行在您的域上运行的JavaScript能够执行的任何操作(包括cookie窃取,XSS,偷渡式恶意软件等).

您唯一可以现实地做的是减轻风险,而不是eval()用户提供的内容.试图消毒输入只允许"安全"输入是注定要失败的; 几乎不可能定义什么是安全的,甚至更难以实际限制脚本(假设潜在的攻击者有一种解释性的语言来掩盖他的意图).

请注意,如果这是出于教育目的,那么一种方法就是确保所有安全漏洞无关紧要.糟糕的JavaScript无法破坏您的服务器或从您的银行帐户中窃取资金(当然,除非它在您银行的网页上).如果托管该网页的网站没有值得窃取的cookie或会话,并且学生知道它只是一种教育资源,我认为没有什么可担心的.大多数攻击依赖于访问存储在您域中的机密信息,或欺骗域访问者以某种方式放弃机密信息(网络钓鱼攻击或类似攻击).为了您的目的,我认为您会没事 - 只是不要在"真实"的网站上这样做.


考虑到用户可以使用开发人员工具执行他们希望的任意代码,是不是能够执行用户提供的任意代码?

2> Lou Franco..:

它将在自己的机器上运行.只是不要让他们保存字符串并发送给其他人 - 也不要通过GET将值放在URL中(以便可以通过电子邮件发送).

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有