參考資料:
[1]. 淺談XSS攻擊的那些事(附常用繞過姿勢)
[2]. XSS(偷你的Cookies)
- 什么是XSS
XSS是跨站腳本攻擊(Cross Site Scripting),為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫為XSS。惡意攻擊者往Web頁面里插入惡意Script代碼,當用戶瀏覽該頁之時,嵌入其中Web里面的Script代碼會被執(zhí)行,從而達到惡意攻擊用戶的目的。
例子
用戶在留言板中輸入JS代碼如下
<script>alert(“hey!you are attacked”)</script>
留言板就變成
<html>
<head>
<title>留言板</title>
</head>
<body>
<div id=”board”
<script>alert(“hey!you are attacked”)</script>
</div>
</body>
</html>
輸入的代碼會在訪問網(wǎng)站的時候執(zhí)行。
危害
- 竊取cookie值
- 劫持流量實現(xiàn)惡意跳轉(zhuǎn)
插入跳轉(zhuǎn)代碼
<script>window.location.;</script>
反射型XSS和存儲型XSS
JS代碼有沒有存儲在數(shù)據(jù)庫。
反射型XSS例子:網(wǎng)站有一些回顯的功能,比如我們在URL參數(shù)可能會重新返回到HTML頁面,如果這個參數(shù)是一段JS代碼,那么顯示HTML頁面的時候可能就會執(zhí)行JS代碼。
存儲型XSS:留言板的例子就很經(jīng)典,留言的腳本被存儲到數(shù)據(jù)庫中。

反射型XSS

存儲型XSS
XSS獲取cookie的過程
在目標網(wǎng)站上嵌入一段獲取cookie的JS代碼,并且向我們攻擊的服務(wù)器發(fā)送請求,請求的URL上加上cookie的內(nèi)容。
防范手段
首先是過濾。對諸如<script>、<img>、<a>等標簽進行過濾。
其次是編碼。像一些常見的符號,如<>在輸入的時候要對其進行轉(zhuǎn)換編碼,這樣做瀏覽器是不會對該標簽進行解釋執(zhí)行的,同時也不影響顯示效果。
最后是限制。通過以上的案例我們不難發(fā)現(xiàn)xss攻擊要能達成往往需要較長的字符串,因此對于一些可以預(yù)期的輸入可以通過限制長度強制截斷來進行防御。