【发布时间】:2016-05-10 22:04:14
【问题描述】:
我对基于 dom 的 XSS 攻击感到非常困惑。我只想保护任何服务器检索到的数据被输出到我的 JS 应用程序中的 dom(使用 innerHTML)。转义 HTML 实体或转义安全属性的引号等。然后我读到了基于 dom 的 XSS,但我真的不知道它与转义 HTMl 有什么不同。 https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet#XSS_Prevention_Rules_Summary
在这张表中,你可以看到一个基于 dom 的 XSS 示例:
<script>document.write("UNTRUSTED INPUT: " + document.location.hash);<script/>
并且文章建议您必须应用本文中描述的技术:https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet
如果我错了,请纠正我,但这个示例应该使用简单的 html 实体转义来完全保护。
<script>document.write("UNTRUSTED INPUT: " + escapeHTML(document.location.hash));<script/>
其中 escapeHTML 编码 html 实体。
我不知道第二篇文章是关于什么的, 符号是什么? (谷歌不可能)它是某种服务器端语言吗?逃避 JS 服务器端是有意义的,那么本文中的什么是给生成 javascript 服务器端的人的提示?因为这篇文章对我来说完全没有意义,如果只是针对静态文件中的普通 JS 的话。
更新:我只想知道转义 HTML 是否是我使用 innerHTML 方法动态插入 DOM 时唯一需要做的事情。当然,我知道 url 和样式需要特别注意,如我链接的第一篇文章中所述。
【问题讨论】:
-
我不确定整个问题的答案,但 看起来像 ASP
-
听起来你应该可以很好地提供 HTML 服务。基于 DOM 的攻击与内核的 DOM 攻击向量有关。因此,您只需在备份数据时担心它们。
标签: javascript html dom xss