试图让 McAffee 白名单成为我工作的网站上的假定漏洞,我感到非常沮丧。问题是他们的自动化系统检测到一个假设的 XSS 漏洞,但漏洞仅在 JavaScript 被禁用时才存在。鉴于您需要禁用 JavaScript 才能存在漏洞利用,那么这肯定意味着这不是漏洞利用。谁能想到任何可能的相反论据?
更新 - 添加更多细节:
问题来自一个地方,未清理的 URL 内容被写入 anchor 标记 href。因此,在禁用 JS 的情况下,您可能会遇到这样的事情:
<a href="foor.php?"><script>alert('foo')</script>#someanchor" ..
启用 JavaScript 后,此 href 将更新为(准备好 dom):
<a href="javascript:;">link</a>
因此,在启用 JS 的情况下不再注入(inject)链接,在禁用 JS 的情况下警报将不再执行。
最佳答案
您需要更改您的页面。
<a href="default_for_javascript_disabled" id="speciallink">link</a>
<script type="text/javascript">
var link = document.getElementById("speciallink");
link.href = "value_for_javascript_enabled";
</script>
关于javascript - 禁用 JavaScript 时的 XSS 利用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2973551/