javascript - 使用 URL 哈希重新定义 XSS 攻击中的转义函数

标签 javascript jquery security xss

这与 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/

相关文章:

asp.net - 数据库文件和 ASP.NET 登录控件

javascript - thymeleaf 片段表达

javascript - 打印 Jchartfx 图表

javascript - 当我已经定义变量时,为什么控制台会记录变量未定义的错误?

javascript - 在 javascript/jquery 中将输入值添加到数组中的函数

jquery - 延迟悬停法

android - 应用程序是否可能存在恶意软件可以利用的安全漏洞?

linux - Debian 服务器安全

javascript - MongoDB RESTful API 结构

Javascript ImageData 绘图缩放不正确