Firefox的getter和setter带来的安全隐患
http://www.blogjava.net/emu/archive/2011/01/19/343192.html
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的一些对第三方判断时候要小心。
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的一些对第三方判断时候要小心。