这与 XSS attack 相关使用 jQuery 选择器。我正在阅读代码中的 url 哈希。如果我有这样的格式错误的网址
http://www.example.com/#<img src='/' onerror='alert(1)'>
安全的出行方式是 escape
在创建选择器之前在我的代码中使用函数(例如 _.escape )(我知道我可以使用 $('body').find(...)
来避免这种情况,但我的问题不是要避免它)
var wHash = escape(window.location.hash.replace('#',''));
$(wHash);
问题:是否可以重新定义 escape
在有效负载内,使其无用。像这样的事情:
<img src='/' onerror='(function(){window.escape = function(x) { return x; } })()'>
我无法精确地设计它以使其工作,但我想知道是什么阻止了攻击者重新定义 escaping
url 哈希中的部分代码?
最佳答案
wHash = escape(…)
在之前 $(wHash)
执行,这将从 <img …>
创建图像元素。但如escape
在 $
评估之前破坏值,escape
函数重定义只会在调用它之后发生。
关于javascript - 使用 URL 哈希重新定义 XSS 攻击中的转义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24847958/