firefox下的document不能隨便用var document來覆蓋,本來是一個挺好的權限保護機制,但是它對document的保護也就到此為止了。表面上看起來系統提供的document.domain、document.cookie等接口似乎不允許開發者隨便修改,但是實際上呢:
document.__defineGetter__( "cookie",
function(){
return this.c;
}
);
document.__defineSetter__( "cookie",
function(sText){
this.c="HACK : "+sText;
}
);
document.__defineGetter__( "domain",
function(){
return this.d;
}
);
document.__defineSetter__( "domain",
function(sText){
this.d="HACK : "+sText;
}
);
document.cookie="fake cookie";
alert(document.cookie)
document.domain="fake domain"
alert(document.domain)
document實際上已經成了一個傀儡,隨便開發者擺弄了。因此我們做基于document.domain和document.cookie的一些對第三方判斷時候要小心。