Firefox的getter和setter帶來的安全隱患
阿新 • • 發佈:2019-01-05
firefox下的document不能隨便用var document來覆蓋,本來是一個挺好的許可權保護機制,但是它對document的保護也就到此為止了。表面上看起來系統提供的document.domain、document.cookie等介面似乎不允許開發者隨便修改,但是實際上呢:
document.__defineGetter__( "cookie",
function(){
returnthis.c;
}
);
document.__defineSetter__( "cookie",
function(sText){
this.c="HACK : "+sText;
}
);
document.__defineGetter__( "domain",
function(){
returnthis.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的一些對第三方判斷時候要小心。
document.__defineGetter__( "cookie",
function(){
returnthis.c;
}
);
document.__defineSetter__( "cookie",
function(sText){
this.c="HACK : "+sText;
}
);
document.__defineGetter__( "domain",
function(){
}
);
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的一些對第三方判斷時候要小心。