XSS攻擊原理與解決方案

簡(jiǎn)介

跨站腳本攻擊(Cross Site Scripting)縮寫(xiě)CSS,但這會(huì)與層疊樣式表(Cascading Style Sheets,CSS)的縮寫(xiě)混淆,故取名Xss,Xss攻擊是網(wǎng)絡(luò)安全攻擊中非常常見(jiàn)的一種攻擊方式。它是對(duì)網(wǎng)頁(yè)注入可執(zhí)行腳本的一種攻擊方式。

1、反射型XSS

假設(shè)我們的網(wǎng)站中有這樣一行代碼:

...
<span>輸入:<?php echo $_GET['input'];?></span>
...

這是一個(gè)簡(jiǎn)單的頁(yè)面,$_GET獲取了變量名為input的值,通過(guò)echo函數(shù)輸出了值。
這個(gè)時(shí)候我們?cè)L問(wèn):domain.com/index.php?input=helloworld

image.png

頁(yè)面會(huì)出現(xiàn)“輸入:helloworld”,一切看起來(lái)都很正常。
但是我們輸入一些javascript呢?
例如在瀏覽器里訪問(wèn):domain.com/index.php?input=<script>alert('xss')</script>
image.png

沒(méi)錯(cuò)它彈窗了。
但這并沒(méi)有實(shí)際意義,但是通過(guò)這個(gè)原理知道了,輸入javascript代碼是可以被執(zhí)行的。當(dāng)我們輸入一些其他復(fù)雜代碼,比如document.cookie就會(huì)盜取用戶cookie信息,或讀取其他重要信息。

攻擊例子

還是剛剛這個(gè)網(wǎng)頁(yè),我們假設(shè)某個(gè)用戶的這個(gè)網(wǎng)頁(yè)中的localstorage中保存著用戶token。再假設(shè)這時(shí)候訪問(wèn):domain.com/index.php?input=<script>location.)</script>
這正是將 授權(quán)登陸的token發(fā)送給了攻擊者的服務(wù)器,攻擊者拿到token就等于拿到了登陸態(tài),攻擊者正是通過(guò)發(fā)送此類似鏈接,誘導(dǎo)用戶點(diǎn)擊進(jìn)行攻擊。因此不要點(diǎn)擊陌生鏈接。

如何預(yù)防

1、不要相信用戶輸入,過(guò)濾所有的HTTP Request參數(shù)。
2、用戶輸入長(zhǎng)度限制。
3、http-only,禁止js讀取某些cookie。
4、避免拼接html。
5、避免內(nèi)聯(lián)事件。如<button onclick="load('{{ data }}')">點(diǎn)</button>
6、主動(dòng)檢測(cè)和發(fā)現(xiàn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容