什么是xss攻擊?


一.什么是xss攻擊

  跨站腳本攻擊(XSS),英文全稱 Cross Site Script

  XSS攻擊,一般是指黑客通過在網頁中注入惡意腳本,當用戶瀏覽網頁時,惡意腳本執行,控制用戶瀏覽器行為的一種攻擊方式

  XSS攻擊分為三種,反射型XSS、存儲型XSS、DOM Based XSS.

了解什么是xss攻擊,例子:

  本地服務器demo目錄下有個index.php,通過提交信息顯示在頁面上顯示數據。

  正常情況下:http:localhost/demo/index.php?name=張三,

  網頁上就會顯示張三出來,這個信息是用戶在瀏覽器的url中輸入的,可以正常顯示在頁面上,但是如果在頁面中插入一段javascript代碼,頁面就無法正常顯示了,

  例:http:localhost/demo/index.php?name=<script>window.open(http://www.fanyi.com)</script>,

  例子雖然簡單但是提現xss攻擊的完整流程。

1.反射性XSS

  也被稱為非持久性XSS,這種攻擊方式把XSS的Payload寫在URL中,通過瀏覽器直接“反射”給用戶。用戶將一段含有惡意代碼的請求提交給 Web 服務器,Web 服務器接收到請求時,又將惡意代碼反射給了瀏覽器端,這種攻擊方式通常需要誘使用戶點擊某個惡意鏈接,才能攻擊成功。

2.存儲型XSS

  又被稱為持久性XSS,會把黑客輸入的惡意腳本存儲在服務器的數據庫中。當其他用戶瀏覽頁面包含這個惡意腳本的頁面,用戶將會受到黑客的攻擊。一個常見的場景就是黑客寫下一篇包含惡意JavaScript腳本的博客文章,當其他用戶瀏覽這篇文章時,惡意的JavaScript代碼將會執行

3.DOM Based XSS

  基於 DOM 的 XSS 攻擊是不牽涉到頁面 Web 服務器的,其實就是利用后端代碼的漏洞。它的特點是在 Web 資源傳輸過程或者在用戶使用頁面的過程中修改 Web 頁面的數據.

XSS攻擊的危害

我們把進行XSS攻擊的惡意腳本成為XSS Payload。XSS Payload的本質是JavaScript腳本,所以JavaScript可以做什么,XSS攻擊就可以做什么。
一個最常見的XSS Payload就是盜取用戶的Cookie,從而發起Cookie劫持攻擊。Cookie中,一般會保存當前用戶的登錄憑證,如果Cookie被黑客盜取,以為着黑客有可能通過Cookie直接登進用戶的賬戶,進行惡意操作。

防御

其實如今一些流行的瀏覽器都內置了一些對抗XSS的措施,比如Firefox的CSP、IE 8內置的XSS Filter等。

  • 將cookie等敏感信息設置為httponly,禁止Javascript通過document.cookie獲得
  • 對所有的輸入做嚴格的校驗尤其是在服務器端,過濾掉任何不合法的輸入,比如手機號必須是數字,通常可以采用正則表達式.
  • 凈化和過濾掉不必要的html標簽,比如:<iframe>, alt,<script> ;凈化和過濾掉不必要的Javascript的事件標簽,比如:onclick, onfocus
  • 轉義單引號,雙引號,尖括號等特殊字符,可以采用htmlencode編碼 或者過濾掉這些特殊字符
HttpOnly

HttpOnly最早是由微軟提出,並在IE6中實現的,至今已逐漸成為一個標准。瀏覽器將禁止頁面的JavaScript訪問帶有HttpOnly 屬性的Cookie。以下瀏覽器開始支持HttpOnly:

  • Microsoft IE 6 SP1+
  • Mozilla FireFox 2.0.0.5+
  • Mozilla Firefox 3.0.0.6+
  • Google Chrome
  • Apple Safari 4.0+
  • Opera 9.5+
  • 一個Cookie的使用過程如下:

  Step1: 瀏覽器向服務器發送請求,這時候沒有cookie。 

  Step2: 服務器返回同時,發送Set-Cookie頭,向客戶端瀏覽器寫入Cookie。 

  Step3: 在該Cookie到期前,瀏覽器訪問該域名下所有的頁面,都將發送該Cookie。而HttpOnly是在Set-Cookie時標記的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM