javascript - 用户输入的 javascript 不如浏览器 Web 开发人员工具安全?

标签 javascript user-input

我想在我的网页上添加一个小功能,用户可以在其中编写 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/

相关文章:

javascript - 如何设置 Atom JS 自动完成?

javascript - 多个具有不同颜色的可拖动对象,具体取决于它所在的可放置对象

c# - 带用户输入的重载方法 (ReadLine())

c++ - 为什么getline在3个换行符之后表现怪异?

javascript - 旧版浏览器的 ECMAScript 5 兼容性脚本

javascript - 给元素添加新样式会报错?

javascript - 如何选择包装器中的所有元素?

c++ - 使用 Glut 接受键盘输入

android - 提示用户对应用内的 Android 应用进行评分

python - 如果 while 循环处于事件状态, turtle 图形不会响应 onkey() 命令