快速對字元轉義,避免跨站攻擊XSS

HPhone發表於2013-11-09

    XSS已經成為非常流行的網站攻擊方式,為了安全起見,儘量避免使用者的輸入。可是有些情況下不僅不避免,反而要求鼓勵輸入,比如寫部落格。部落格園開放性很高,可以執行手寫的JS。之前比較著名的例子就是,凡是看到某一篇文章的,都自動關注他。

    如果避免跨站攻擊的話,我們就得對使用者的輸入,進行轉義。例如<script type='text/javascript'>alert('hello world')</script>。如果直接儲存這個字串的話,然後再輸出的話,就會執行JS了。我們需要將這個字串轉義成"&lt;script type='text/javascript'&gt;alert('hello world')&lt;/script&gt;"。

    轉義,就是一個個字元的匹配,然後轉換。看著不難,但是需要轉義的字元也不少。另外當字元數量大的時候,效率成為一個問題。下面我寫一個函式,讓瀏覽器底層幫我們做到。

 

 function stringEncode(str){
        var div=document.createElement('div');
        if(div.innerText){
            div.innerText=str;
        }else{
            div.textContent=str;//Support firefox
        }
        return div.innerHTML;
   }

 

  

 

 

相關文章