【发布时间】:2020-04-29 09:09:40
【问题描述】:
长话短说,我有一个网络应用程序,除其他外,它允许用户(必须登录)创建、部署和接收来自在线表单的提交,使用 JSON 框架进行数据存储。
在用户保存新创建的表单时,会运行各种检查以防止 SQL 注入并捕获潜在的 XSS 漏洞。
但是,在创建实际表单时,输入到字段中的任何代码都会在用户浏览器上实时呈现。所以,如果我决定在段落字段中输入以下内容:
<a href="#" onclick="alert(1);">click me</a>
...如果单击它会立即显示链接并运行 JS。但是,如果用户尝试保存此表单,则代码将被我现有的保护措施撕裂,并停止在已部署的表单上运行。因此,唯一可以运行代码的人就是创建它的人。
所以,我的问题是,允许用户实时动态创建内容(包括 JS)存在什么风险,前提是他们无法将其部署或保存到我的数据库中?我感觉可能存在风险,但我不是 XSS 专家。
为了澄清,只有生成代码的人才能运行它。他们保存数据的那一刻,它就会被撕裂。
【问题讨论】:
-
如果您的清理工作如前所述,它是安全的。
-
这让人放心。几个星期以来,我一直在向它扔 XSS 备忘单示例,但还没有找到任何可以通过的东西。但总是担心我忽略了一些东西。
-
我猜你的情况类似于按 F12 并在浏览器控制台中输入 javascript。它只允许您访问您已经拥有的东西,其他实体不受它的影响。
-
@Flame 存在潜在的攻击,与开发控制台没有直接可比性。这取决于您想要保护您的应用程序的安全,而找出的工具是威胁建模。有趣的是,例如 Facebook 甚至发现开发控制台是一个潜在威胁,请参阅他们的控制台以进行缓解。 :)
-
@GaborLengyel 在这两种情况下,用户 A 都在运行他自己输入的代码。从这篇文章的标签来看,我认为用户输入只是以某种方式评估或插入到 DOM 中,这导致它执行。没有说明任何用户输入都发送到服务器。因此,威胁级别似乎与开发控制台输入相同。
标签: javascript security xss