2
我想覆蓋window.Image對象以檢測瀏覽器中的一些XSS攻擊。 看到代碼:如何用Javascript替代Image對象
(function(){
if(typeof(window.Image)!=="object"){
var _original_Image=new Image();
Object.defineProperty(_original_Image,'src', {
set: function(srcAttr){
if(/document\.cookie/.test(srcAttr)){console.log('cookie attack!')};
_original_Image.setAttribute('src',srcAttr);
},
get: function(){return _original_Image.src};
})
window.Image = function(){ return _original_Image };
return _original_Image;
}
}())
運行它。
>>> a = new Image()
<img>
>>> a.src="document.cookie"
cookie attack!
GET http://192.168.0.2/document.cookie 404 (Not Found)
>>> document.body.appendChild(a)
<img src="document.cookie">
圖像被成功追加。
但有一些problem.see
>>> b = new Image()
<img src="document.cookie">
它menas原來HTMLImageElement改變,這將有最後的IMG元素的attrubutes。
我想僅返回<img>
。如何?