XSS攻擊原理弊端與及防范方案
發表時間:2023-04-04 來源:明輝站整理相關軟件相關文章人氣:
[摘要]學習XSS之前, 我們很有必要知道XSS到底是什么東西。 其英文名是(Cross Site Scripting), 意思就是跨站腳本攻擊, 是黑客常用的攻擊手段之一, 因為與層疊樣式表CSS(Ca...

學習XSS之前, 我們很有必要知道XSS到底是什么東西。 其英文名是(Cross Site Scripting), 意思就是跨站腳本攻擊, 是黑客常用的攻擊手段之一, 因為與層疊樣式表CSS(Cascading Style Sheets)同名, 為了避免混淆, 故將其命名為XSS。 好了, 現在知道了它的名字的由來之后, 最重要的就是去了解XSS的實現原理。
XSS實現原理
因為瀏覽器本身的設計缺陷, 瀏覽器只負責解釋執行html+css+javascript代碼, 并不會檢驗其安全性。 故如果你的服務器對沒有對XSS漏洞準備安全的預防措施, 都會存在XSS漏洞。 下面具體講一下XSS的攻擊過程:
1.用戶登陸web應用程序上的網頁;.該網頁已經被攻擊者利用各種手段注入了javascript等腳本代碼;
2.服務器對用戶的瀏覽請求做出反應, 用戶獲取攻擊者注入過代碼的URL;
3.攻擊者的javascript代碼在瀏覽者的瀏覽器上打開;此時可能會伴隨用戶瀏覽器向攻擊者發送會話令牌, 然后攻擊者劫持用戶會話等現象的發生。
在接觸了幾天XSS之后, 大致有以下特點:
1.XSS即是web應用程序上的計算機安全漏洞, 也是黑客常用的攻擊手段;對于攻擊者而言, 需要有很好的計算機語言基礎, 如JavaScript, HTML5, Ajax, Css和其他腳本語言。
2.XSS產生的主要原因是web瀏覽器對用戶的輸入過濾不足。
3.通過將代碼注入到網頁, 雖然對Web服務器沒有直接傷害, 但它借助網絡傳播, 其危害最終會反饋到服務器。
4.XSS漏洞如此普遍主要是因為web瀏覽器本身的設計是不安全的, 開發人員在交互過程中的設計階段忽略了XSS防護, 加上大部分人還沒認識到XSS的危害和錯誤的認為XSS就只會在瀏覽器上彈出一個窗口而已, 加上觸發跨站腳本的方式簡單且眾多和web2.0的流行和社交功能的迅猛發展, 奠定了XSS發展的基礎。
5.XSS最重要也是最核心的是利用自己構造好的XSS語句, 欺騙web應用程序上的過濾器, 實現繞過其安全檢測, 達成向網頁中注入javaScript等腳本信息的目的, 從而導致XSS漏洞在互聯網上傳播。
6.要善于利用工具提高效率, 要學會利用各種編碼方式提高XSS的攻擊性和隱蔽性。 例如, unicode, escapes, URL編碼, 十六進制, 八進制等, 同時對于特定情境下也可以利用腳本加密技術實現XSS攻擊。
7.有時候配合CSRF漏洞, 將會由意想不到的效果
同時XSS攻擊也有一下弊端
1.XSS攻擊無對應軟件完成自動化攻擊, 且有一定幾率不成功;
2.是一種被動的攻擊手段, 對website有http-only, crossdomiar。
下面幾個概念需要理解好
1.shellcode——起初是溢出程序和蠕蟲程序的核心, 注入目標網頁中, 使用腳本編寫好的代碼;
2.Exploit——完整編寫好的漏洞利用工具;
3.POC(Proof of Concept)——一段證明漏洞存在的程序代碼片段;
4.payload——意思為有效載荷, 概念驗證, 即是漏洞驗證腳本;是組成Poc和Exp的必要組成部分。
XSS的分類
一.持久型的XSS
攻擊方把惡意腳本代碼固化在頁面中, 當其他用戶訪問到此頁面的時候, 瀏覽器會解析并且執行該腳本代碼, 進而對其他用戶進行XSS攻擊。 最典型的例子是留言板。
二.非持久性(反射型)的XSS
攻擊方通過改寫網頁訪問的URL, 使其指向攻擊方已經準備好的腳本代碼。 典型的例子是, 搜索欄中輸入腳本代碼。 欺騙用戶自己去點擊鏈接才能觸發XSS代碼。
三.DOM型的XSS
攻擊方利用javascript來展開攻擊, 用戶請求一個由攻擊方提供的經過專門設計的URL, 包括嵌入式的javascript, 服務器響應用戶請求的時候不對URL進行處理, 當用戶瀏覽這個相應的時候, 腳本得以觸發。
如何防止XSS跨站腳本攻擊:
原則:不相信用戶輸入的數據
將重要的cookie標記為http only, 這樣的話Javascript 中的document.cookie語句就不能獲取到cookie了
只允許用戶輸入我們期望的數據。 例如:年齡的textbox中, 只允許用戶輸入數字, 而數字之外的字符都過濾掉
對數據進行Html Encode 處理。 < 轉化為 <、> 轉化為 >、& 轉化為 &
、' 轉化為 '、" 轉化為 "、空格 轉化為
1
2
過濾或移除特殊的Html標簽。 例如:<script>、<iframe>、<
for <、> for >、" for
過濾JavaScript 事件的標簽。
例如 “onclick=”、”onfocus” 等等
1
2
3
4
很多瀏覽器都加入了安全機制來過濾XSS
另外:
如何防止SQL注入:
永遠不要信任用戶的輸入。 對用戶的輸入進行校驗, 可以通過正則表達式, 或限制長度;對單引號和雙”-“進行轉換等。
永遠不要使用動態拼裝sql, 可以使用參數化的sql或者直接使用存儲過程進行數據查詢存取
永遠不要使用管理員權限的數據庫連接, 為每個應用使用單獨的權限有限的數據庫連接
不要把機密信息直接存放, 加密或者hash掉密碼和敏感的信息
應用的異常信息應該給出盡可能少的提示, 最好使用自定義的錯誤信息對原始錯誤信息進行包裝
上面是電腦上網安全的一些基礎常識,學習了安全知識,幾乎可以讓你免費電腦中毒的煩擾。