|
對(duì)數(shù)據(jù)進(jìn)行正確地轉(zhuǎn)義處理,以保證它們不會(huì)被解釋為HTML代碼(對(duì)瀏覽器而言)或者XML代碼(對(duì)Flash而言)。
刪除會(huì)被惡意使用的字符串或者字符
一般情況下,刪除一些字符會(huì)對(duì)用戶體驗(yàn)造成影響,舉例來(lái)說,如果開發(fā)人員刪除了上撇號(hào)(’),那么對(duì)某些人來(lái)說就會(huì)帶來(lái)不便,如姓氏中帶有撇號(hào)的人,他們的姓氏就無(wú)法正常顯示。同時(shí),嚴(yán)禁開發(fā)人員刪除字符串,因?yàn)橥耆梢酝ㄟ^許多不同的形式來(lái)表示字符串。應(yīng)用程序和瀏覽器會(huì)對(duì)字符串作出不同的解釋。例如,SAMY蠕蟲利用了IE不把換行符作為定界符字符這一事實(shí),因此,IE看來(lái)JavaScript和jav%0dascr%0dipt是一回事。遺憾的是,MySpace把換行符解釋為字的分界符號(hào),并允許將向Samy(及其他人)的MySpace頁(yè)面中放入下列內(nèi)容:
〈 div id="mycode" expr="a_lert('1')" style="background:url('java
script:eval(document.all.mycode.expr)')"〉〈/div〉
我們建議對(duì)所有用戶提供的又被發(fā)回給Web瀏覽器的數(shù)據(jù)都進(jìn)行轉(zhuǎn)義處理,包括AJAX調(diào)用、移動(dòng)式應(yīng)用、Web頁(yè)面、重定向等等內(nèi)的數(shù)據(jù)。然而,對(duì)字符串進(jìn)行轉(zhuǎn)義處理并不是我們想得那么簡(jiǎn)單:您必須根據(jù)用戶提供的數(shù)據(jù)將被放到HTTP應(yīng)答中的具體位置來(lái)決定使用URL編碼、HTML實(shí)體編碼或者JavaScript編碼進(jìn)行轉(zhuǎn)義。
十、防范基于UTF-7的XSS
基于UTF-7的攻擊是很容易防范的,只要強(qiáng)制指定在HTTP報(bào)頭中的或者HTML響應(yīng)內(nèi)部的字符編碼即可。我們建議對(duì)默認(rèn)HTTP報(bào)頭做如下設(shè)置:
Content-Type: text ml; charset=utf-8
還應(yīng)當(dāng)對(duì)全部HTML響應(yīng)添加下列限制:
< meta http-equiv="Content-Type" content="text ml;charset=utf-8" >
十一、結(jié)束語(yǔ)
在瀏覽器中已經(jīng)建立了一些安全措施——即同源策略和Cookie安全模型。此外,一些瀏覽器插件,諸如Flash Player、Outlook Express 以及Acrobat Reader等,帶來(lái)了更多的安全問題和安全措施。然而,如果攻擊者可以強(qiáng)迫用戶執(zhí)行源自特定域的JavaScript的話,這些額外的安全措施總是傾向于削弱同源策略的力量。
跨站點(diǎn)腳本攻擊(XSS)技術(shù)能夠強(qiáng)迫用戶執(zhí)行攻擊者以受害者名義在某個(gè)域上選擇的腳本,如JavaScript、VBScript、ActionScript,等等。XSS要求某個(gè)域上的Web應(yīng)用程序能夠提供(即供應(yīng)、返回)被攻擊者所控制的字符。因此,攻擊者可以向頁(yè)面注入代碼,而這些代碼將來(lái)會(huì)在這個(gè)有弱點(diǎn)的域的上下文中執(zhí)行。本文詳細(xì)介紹跨站腳本的危害,以及攻擊者是如何誘騙受害者的。最后介紹針對(duì)跨站腳本攻擊的防御措施。至此,讀者已經(jīng)能夠?qū)缯灸_本攻擊有一個(gè)全面深入的了解了。
本新聞共 4頁(yè),當(dāng)前在第 4頁(yè) 1 2 3 4 |
|
【收藏】【打印】【進(jìn)入論壇】 |
|
|
|
|
|
|
|