天天看點

淺談系列之跨站腳本攻擊(XSS)

淺談系列之跨站腳本攻擊(XSS)

一、XSS簡介

XSS,英文全稱Cross Site Scripting,翻譯過來就是跨站腳本,本應該寫作CSS,但是為了和層疊樣式表(Cascading Style Sheet)有所區分,是以改寫為XSS。

二、XSS攻擊基本原理

跨站腳本攻擊顧名思義是通過腳本來完成攻擊的,也就是通過将惡意的Script代碼通過某些方式插入Web網頁中,當使用者通路這個網頁的時候,插入的惡意Script代碼就會執行,進而實作攻擊的效果。

個人總結XSS攻擊四步曲:

1、攻擊者在正經url後某個參數中添加惡意代碼;

2、通過各種“威逼利誘”引導受害者點選包裝好的url;

3、受害者浏覽器收到響應後執行解析,其中的惡意代碼也會被執行到;

4、在惡意代碼中,攻擊者可以實作盜取受害者的cookie\token等相關資訊,然後冒充受害者進行非法操作;

三、XSS攻擊類型

反射型XSS(非持久化)

攻擊者引誘受害者通路包含惡意腳本的連結,這類攻擊需要受害者主動點選才能觸發。此類惡意代碼是存在url中的,每次攻擊都是一次性的,是以又稱為非持久性XSS。

存儲型XSS(持久化)

攻擊者在web頁面中的輸入框(如留言闆)中輸入惡意代碼進行送出,此時惡意代碼将會上傳至伺服器中,待後續有通路此頁面使用者的浏覽器就會執行這串惡意代碼。此類惡意代碼是存儲在後端資料庫中,是以又稱為持久性XSS。

DOM型

我們用戶端的js可以對頁面dom節點進行動态的操作,比如插入、修改頁面的内容。比如說用戶端從URL中提取資料并且在本地執行,如果使用者在用戶端輸入的資料包含了惡意的js腳本的話,但是這些腳本又沒有做任何過濾處理的話,那麼我們的應用程式就有可能受到DOM-based XSS的攻擊。

四、如何防範XSS攻擊

1、後端對送出的資料進行過濾;

2、使用内容安全性政策(CSP);

3、禁止 JavaScript 讀取某些敏感 Cookie

4、對于不受信任的輸入,都應該限定一個合理的長度;

5、時刻保持安全意識,在寫代碼的時候考慮安全風險;

五、寫在最後

萬事沒有絕對,安全也是一樣,隻有相對安全,沒有絕對安全。我們需要時刻保持安全意識,在産品設計之初、在測試階段、在上線後服務運維階段等等等等。在業務和安全之間找到平衡的那個點,才能更好的展現安全本身的安全。

下期預告:淺談系列之跨站請求僞造(CSRF),敬請期待~

淺談系列之跨站腳本攻擊(XSS)

繼續閱讀