網(wǎng)站建設(shè)中,安全抵御抵御XSS攻擊是十分重要的,關(guān)系到網(wǎng)站安全。那么什么是XSS攻擊呢?
XSS攻擊全稱跨站腳本攻擊(Cross Site Scripting),是一種常見(jiàn)于 Web 應(yīng)用中的計(jì)算機(jī)安全漏洞。惡意攻擊者往 Web 頁(yè)面里嵌入惡意的客戶端腳本,當(dāng)用戶瀏覽此網(wǎng)頁(yè)時(shí),腳本就會(huì)在用戶的瀏覽器上執(zhí)行,進(jìn)而達(dá)到攻擊者的目的。比如獲取用戶的 Cookie、導(dǎo)航到惡意網(wǎng)站、攜帶木馬等。
XSS 漏洞是由于對(duì)用戶提交的數(shù)據(jù)沒(méi)有經(jīng)過(guò)嚴(yán)格的過(guò)濾處理造成的,所以防御的原則就是不相信用戶輸入的數(shù)據(jù),對(duì)輸入進(jìn)行過(guò)濾,對(duì)輸出進(jìn)行編碼。
1、使用 XSS Filter
針對(duì)用戶提交的數(shù)據(jù)進(jìn)行有效的驗(yàn)證,只接受我們規(guī)定的長(zhǎng)度或內(nèi)容的提交,過(guò)濾掉其他的輸入內(nèi)容。比如:
表單數(shù)據(jù)指定值的類型:年齡只能是 int 、name 只能是字母數(shù)字等。
過(guò)濾或移除特殊的 html 標(biāo)簽:<script>、<iframe>等。
過(guò)濾 js 事件的標(biāo)簽:onclick、onerror、onfocus等。
2、html 實(shí)體
當(dāng)需要往 HTML 標(biāo)簽之間插入不可信數(shù)據(jù)的時(shí)候,首先要做的就是對(duì)不可信數(shù)據(jù)進(jìn)行 HTML Entity 編碼,在 html 中有些字符對(duì)于 HTML 來(lái)說(shuō)是具有特殊意義的,所以這些特殊字符不允許在文本中直接使用,需要使用實(shí)體字符。 html 實(shí)體的存在是導(dǎo)致 XSS 漏洞的主要愿意之一,因此我們需要將實(shí)體轉(zhuǎn)化為相應(yīng)的實(shí)體編號(hào)。
3、JavaScript編碼
這條原則主要針對(duì)動(dòng)態(tài)生成的JavaScript代碼,這包括腳本部分以及HTML標(biāo)簽的事件處理屬性(如onerror, onload等)。在往JavaScript代碼里插入數(shù)據(jù)的時(shí)候,只有一種情況是安全的,那就是對(duì)不可信數(shù)據(jù)進(jìn)行JavaScript編碼,并且只把這些數(shù)據(jù)放到使用引號(hào)包圍起來(lái)的值部分(data value)之中,除了上面的那些轉(zhuǎn)義之外,還要附加上下面的轉(zhuǎn)義:
轉(zhuǎn)成
/轉(zhuǎn)成/
;轉(zhuǎn)成;(全角;)
注意:在對(duì)不可信數(shù)據(jù)做編碼的時(shí)候,不能圖方便使用反斜杠 對(duì)特殊字符進(jìn)行簡(jiǎn)單轉(zhuǎn)義,比如將雙引號(hào) ”轉(zhuǎn)義成 ”,這樣做是不可靠的,因?yàn)闉g覽器在對(duì)頁(yè)面做解析的時(shí)候,會(huì)先進(jìn)行HTML解析,然后才是JavaScript解析,所以雙引號(hào)很可能會(huì)被當(dāng)做HTML字符進(jìn)行HTML解析,這時(shí)雙引號(hào)就可以突破代碼的值部分,使得攻擊者可以繼續(xù)進(jìn)行XSS攻擊;另外,輸出的變量的時(shí)候,變量值必須在引號(hào)內(nèi)部,避免安全問(wèn)題;更加嚴(yán)格的方式,對(duì)除了數(shù)字和字母以外的所有字符,使用十六進(jìn)制xhh 的方式進(jìn)行編碼。
4、Http Only cookie
許多 XSS 攻擊的目的就是為了獲取用戶的 cookie,將重要的 cookie 標(biāo)記為 http only,這樣的話當(dāng)瀏覽器向服務(wù)端發(fā)起請(qǐng)求時(shí)就會(huì)帶上 cookie 字段,但是在腳本中卻不能訪問(wèn) cookie,這樣就避免了 XSS 攻擊利用 js 的 document.cookie獲取 cookie。
很多地方都可能產(chǎn)生 XSS 漏洞,并且產(chǎn)生的方式不一樣,所以對(duì)于這些漏洞,我們需要找到正確的方法來(lái)防御。XSS 漏洞在不斷的發(fā)展,上面介紹的防御方法幾乎能夠解決大部分的 XSS 漏洞,即便這樣,我們也不能掉以輕心,為了讓 Web 應(yīng)用更安全,我們還需要結(jié)合其他的方法來(lái)加強(qiáng) XSS 防御。
隨著科技的不斷發(fā)展,Web 應(yīng)用變得越來(lái)越復(fù)雜,隨之而產(chǎn)生的漏洞(不僅限于 XSS ) 也越來(lái)越多。沒(méi)有什么方法能夠一次性解決所有安全問(wèn)題,我們只能在實(shí)際的工作過(guò)程中,針對(duì)不同的安全漏洞進(jìn)行針對(duì)性的防御。
廣州天河區(qū)珠江新城富力盈力大廈北塔2706
020-38013166(網(wǎng)站咨詢專線)
400-001-5281 (售后服務(wù)熱線)
深圳市坂田十二橡樹莊園F1-7棟
Site/ http://www.szciya.com
E-mail/ itciya@vip.163.com
品牌服務(wù)專線:400-001-5281
長(zhǎng)沙市天心區(qū)芙蓉中路三段398號(hào)新時(shí)空大廈5樓
聯(lián)系電話/ (+86 0731)88282200
品牌服務(wù)專線/ 400-966-8830
旗下運(yùn)營(yíng)網(wǎng)站:
Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號(hào)