我想在我的网页上添加一个小功能,用户可以在其中编写 javascript 来进行一些数据操作(例如,从数据表创建一个新对象 - 理想情况下,我想禁用不必要的功能JS比如通过ajax访问服务器等)。就安全性而言,这真的是个坏主意吗?似乎允许此类功能(例如,w3school 试用功能)的站点使用服务器端验证。 Stackoverflow 上有人建议在 Web 工作线程中运行用户代码更安全,我可以这样做。
但我的问题是,一般来说,如今大多数浏览器都带有开发人员工具和控制台,您可以在其中编写和执行 javascript 代码。因此,添加用户 JS 编辑器功能不会使应用程序比现在更容易受到攻击。我的想法对吗?
最佳答案
理论上这是“安全的”。从某种意义上说,用户无论如何都可以使用调试控制台或什至使用地址栏中的 “javascript:”
协议(protocol)来执行此操作,这是安全的。
将这些脚本保存在数据库中是不安全的。或者更确切地说,允许一个用户的脚本在另一个用户的 session 中运行。
用户自己执行的,风险自负。如果他删除了所有数据,那是他的错。就像在 Linux 上允许用户访问 rm
命令一样。
您要保护的是来自用户脚本的其他用户数据。
这是人们不断尝试在论坛评论中注入(inject) javascript 的原因之一 - 这样当其他人查看被黑的评论时,脚本可以窃取黑客无法访问的信息。
关于javascript - 用户输入的 javascript 不如浏览器 Web 开发人员工具安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26835769/