在使用URL哈希的XSS攻击中重新定义转义函数
Re-define escape function in an XSS attack using URL hash
这与使用jQuery选择器的XSS攻击有关。我在代码中读取url哈希值。如果我有一个像这样的错误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; } })()'>
我不能精确地制作这使它工作,但我想知道是什么阻止攻击者从url哈希重新定义代码的escaping
部分?
wHash = escape(…)
在 $(wHash)
之前执行,这将从<img …>
创建image元素。但是由于escape
在$
计算之前混淆了的值,因此escape
函数的重新定义只会在已经被调用之后才会发生。
相关文章:
- 在Phonegap中重定向到新页面后,AdMob未定义
- $routeParams在传递到新视图时未定义&控制器
- 使用具有用户定义字段的新请求者创建新的Zendesk票证
- 为什么这个功能打印“;未定义的未定义的“;作为联系人名称,添加“新对象”
- 新的自定义角度指令不起作用
- 正在新文件中创建自定义任务
- 在自定义指令中角度设置新变量
- Angular2 在创建 ngSwitch 新视图后调用自定义函数
- Ng管理员自定义参考列表-具有创建新条目的能力
- JavaScript-为什么当我向表中添加新列时,它会说“;未定义的“;在额外的细胞中
- 扩展或定义新的dat.gui属性控制器的最佳方法
- 使用 RequireJS 加载时如何不定义“定义”
- 在数据表的新行中添加按钮,变得未定义
- 从新对象的属性更新对象的属性,但前提是新对象上的属性不是未定义的
- 创建新的子类对象时设置父类中定义的变量时出现问题
- 创建 JavaScript 自定义应用程序的新实例
- 如何观看 img 元素的 ngSrc 并在自定义指令中获取新的宽度和高度
- Chrome扩展抛出"未定义"定义变量
- 如何将自定义(定义)顺序应用于DC.js中的行图的行
- Javascript/JQuery POST "url"未定义(定义)