xss防範攻擊

跨站腳本攻擊(Cross-site scripting),簡稱XSS,是一種針對網頁客戶端的攻擊手段。攻擊者利用網站前後端代碼的漏洞,將他自己的惡意代碼嵌入頁面中,然後誘導他人點擊。一般這種攻擊最容易造成的影響就是用戶信息被盜,惡意代碼可以將被害者的cookies信息以各種形式發給攻擊者,這樣子攻擊者就能夠僞裝成被害者做任何事情。下圖是騰訊公司近幾年的漏洞佔比,XSS佔比高達25%,這問題非常常見,我們也要重點處理。

2、 跨站腳本攻擊的方式

以我們一個線上素材代碼爲例:

        

可以看到,JS做的事情是,把URL中的幾個參數取出,拼接在html中顯示。

這裏有個非常大的安全隱患。我構造了一個如下URL,併發給別人時:

 

./index.html?cover="/><script>alert(0)</script>

 

別人的手機其實就在執行我的攻擊代碼了,具體可見郵件中的代碼包。

 

這只是其中一種攻擊方式,還有常見的攻擊方式是在評論中寫入攻擊代碼,前端顯示這條評論的時候,所有用戶都會受到攻擊,這種漏洞更爲嚴重。

3、 如何防範

一句話,永遠不相信用戶數據。

所有用戶可以修改的數據,包括評論發言、用戶暱稱、URL參數,都是危險的,都不可以直接放在頁面上顯示。

如果實在需要顯示,一定要經過過濾,把惡意代碼進行清理後再展示。

 

過濾步驟:


1、 引入XSS過濾的JS庫xss.js


2、 對不安全的輸入進行過濾,建議在顯示的時候進行過濾


3、 如果是元素本身並不需要html的話,可以直接使用Zepto內置的text方法。text方法修改的是元素textContent屬性,僅作爲文本顯示,而不像html方法修改innerHtml容易造成XSS。


4、這裏僅僅舉例了從URL獲取參數拼在html中的情況,同樣的,從服務器拉取評論填入html等類型的操作,也要進行這樣的處理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章