用户输入的javascript不如浏览器web开发工具安全



我想在我的网页上添加一个小功能,用户可以在其中编写javascript来进行一些数据操作(例如,从数据表创建一个新对象-理想情况下,我想禁用JS中的非必要功能,如通过ajax访问服务器等)。从安全性角度来看,这真的是个坏主意吗?似乎允许这种功能的网站(例如w3school的try-It功能)使用了服务器端验证。Stackoverflow上有人建议在web工作线程中运行用户代码更安全,我可以做到

但我的问题是,一般来说,现在大多数浏览器都配有开发工具和控制台,您可以在其中编写和执行javascript代码。因此,添加用户JS编辑器功能不会使应用程序变得更容易受到攻击。我认为这是对的吗?

理论上这是"安全的"。安全的意义在于,用户可以通过调试控制台甚至使用地址栏中的"javascript:"协议来执行任何操作。

不安全的是将这些脚本保存在数据库中。或者更确切地说,允许一个用户的脚本在另一个用户会话中运行。

用户自己执行的是自己的风险。如果他删除了所有的数据,那就是他的错。就像允许用户访问Linux上的rm命令一样。

您要保护的是用户脚本中的其他用户数据。

这就是人们不断尝试在论坛评论中注入javascript的原因之一,这样当其他人查看被黑客入侵的评论时,脚本就可以窃取黑客无法访问的信息。

你是对的,应用程序不能免受用户编写额外代码在自己的浏览器中执行的影响。

然而,用户通常不能编写代码在其他人的浏览器中执行,在应用程序中启用该行为可能会导致应用程序的攻击或其他未经授权的行为。通过使一个用户能够将javascript添加到其他用户查看和执行的页面,启用了此攻击向量。

两种主要方法是信任和沙箱。在一个身份已知、滥用后果可能随之而来的小社区内,信任可能是可以的。。。。但仍然存在问题。在浏览器中对JS进行沙盒处理也很简单。实际上并没有办法阻止对window的访问,因为this可以变成windoweval也有一些技巧,等等……所以大多数沙盒都会失败。

最新更新