一、什么是xss攻擊
XSS即(ji)(Cross Site Scripting)中文(wen)名稱(cheng)為:跨(kua)站腳(jiao)本(ben)攻擊。XSS的(de)(de)重點不在于(yu)跨(kua)站點,而在于(yu)腳(jiao)本(ben)的(de)(de)執行。那么(me)(me)XSS的(de)(de)原理是:惡意(yi)攻擊者(zhe)在web頁(ye)面中會(hui)插入一(yi)些惡意(yi)的(de)(de)script代(dai)碼。當用戶瀏覽該(gai)頁(ye)面的(de)(de)時候,那么(me)(me)嵌入到(dao)web頁(ye)面中script代(dai)碼會(hui)執行,因此會(hui)達到(dao)惡意(yi)攻擊用戶的(de)(de)目的(de)(de)。
二、xss攻擊的種類及防御方式
XSS攻(gong)擊最(zui)主要有如下分類(lei):反射(she)型(xing)(xing)、存儲型(xing)(xing)、及DOM-based型(xing)(xing)。反射(she)性(xing)(xing)和DOM-baseed型(xing)(xing)可(ke)以(yi)歸類(lei)為非(fei)持久(jiu)(jiu)性(xing)(xing)XSS攻(gong)擊。存儲型(xing)(xing)可(ke)以(yi)歸類(lei)為持久(jiu)(jiu)性(xing)(xing)XSS攻(gong)擊。
1、反射性XSS
反射性(xing)(xing)XSS的(de)(de)(de)原理是:反射性(xing)(xing)xss一般指攻(gong)擊者通過(guo)特定的(de)(de)(de)方式來(lai)誘惑受(shou)害(hai)者去(qu)訪問(wen)一個包含惡(e)意(yi)代碼(ma)的(de)(de)(de)URL。當受(shou)害(hai)者點擊惡(e)意(yi)鏈(lian)接url的(de)(de)(de)時候,惡(e)意(yi)代碼(ma)會(hui)直接在受(shou)害(hai)者的(de)(de)(de)主機上的(de)(de)(de)瀏覽器執行。常見的(de)(de)(de)反射性(xing)(xing)XSS有(you)哪(na)些?常見的(de)(de)(de)是惡(e)意(yi)鏈(lian)接。
2、存儲性XSS
存儲(chu)型XSS的原理(li)是:主要是將(jiang)惡(e)意代碼上傳或存儲(chu)到服(fu)務器中,下次(ci)只要受(shou)害者瀏覽包(bao)含此惡(e)意代碼的頁面就(jiu)會執(zhi)行惡(e)意代碼。
如何防范?后端需要對提交(jiao)的數據進(jin)行過濾。前端也可以做一下處(chu)理方式,比如對script標簽,將特(te)殊字(zi)符(fu)替換成HTML編碼這些(xie)等。
3、DOM-based型XSS
DOM XSS是基于(yu)文檔對象模型的XSS。
一般有(you)如下DOM操作(zuo):使用document.write直接(jie)輸出數(shu)據。使用innerHTML直接(jie)輸出數(shu)據。使用location、location.href、location.replace、iframe.src、document.referer、window.name等(deng)這些。
4、SQL注入
SQL注(zhu)入(ru)是通過客戶端的(de)(de)輸入(ru)把SQL命令注(zhu)入(ru)到一個應用的(de)(de)數據庫中,從而執行惡意的(de)(de)SQL語句。