1. 程式人生 > >Firefox的getter和setter帶來的安全隱患

Firefox的getter和setter帶來的安全隱患

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的一些對第三方判斷時候要小心。