對(duì)跨站腳本攻擊和跨站請(qǐng)求偽造之道的解析
以下的文章主要向大家描述的是對(duì)跨站腳本攻擊與跨站請(qǐng)求偽造之道的解析,你如果對(duì)跨站腳本攻擊與跨站請(qǐng)求偽造之道的解析有興趣的話你就可以點(diǎn)擊以下的文章進(jìn)行觀看了,以下就是文章的詳細(xì)內(nèi)容介紹,望大家借鑒。
這里談到的跨站漏洞利用主要包括跨站腳本攻擊、以及跨站請(qǐng)求偽造與其它的同源攻擊,這些攻擊都是目前極普遍的攻擊方式。
這篇文章可供Web開(kāi)發(fā)人員閱覽,也可供網(wǎng)站管理員參考。 解析跨站腳本攻擊與跨站請(qǐng)求偽造之道 解析跨站腳本攻擊與跨站請(qǐng)求偽造之道[2] 解析跨站腳本攻擊與跨站請(qǐng)求偽造之道[3] 這里談到的跨站漏洞利用包括跨站腳本攻擊、跨站請(qǐng)求偽造以及其它的同源攻擊,這些攻擊都是目前極普遍的攻擊方式。這篇文章可供Web開(kāi)發(fā)人員閱覽,也可供網(wǎng)站管理員參考。
同源策略最初是隨著網(wǎng)景公司的瀏覽器發(fā)布的,它的主要作用是規(guī)定瀏覽器和相關(guān)的編程語(yǔ)言應(yīng)當(dāng)如何處理安全問(wèn)題。這種策略的主旨在于限制一個(gè)網(wǎng)站訪問(wèn)其它網(wǎng)站上的函數(shù),同時(shí)又允許網(wǎng)站自由地控制URI上的代碼源。換句話說(shuō),僅準(zhǔn)許腳本能夠處理同一域名上的其它腳本、80端口和協(xié)議。
同源攻擊主要涉及幾種攻擊方式:跨站腳本攻擊、跨站請(qǐng)求偽造、跨站請(qǐng)求跟蹤、網(wǎng)站緩存投毒、HTTP響應(yīng)Splitting、HTTP請(qǐng)求Smuggling、HTML和JavaScript網(wǎng)絡(luò)掃描。
跨站腳本攻擊
跨站腳本攻擊是一種準(zhǔn)許將惡意代碼注入到網(wǎng)頁(yè)中的安全漏洞。這種攻擊主要用于:
A、釣魚或者cookie竊取,目的是為了訪問(wèn)受限信息。
B、為了惡搞、丑化其它網(wǎng)站或?qū)嵤┥缃还こ坦?/p>
C、在網(wǎng)站的客戶端上執(zhí)行惡意代碼
這種攻擊可以通過(guò)利用IMG標(biāo)記來(lái)實(shí)施破壞或惡搞,如關(guān)閉用戶瀏覽器的窗口,然后打開(kāi)一個(gè)既無(wú)菜單也無(wú)工具欄的窗口,并播放一些惡搞性的聲音。
1、攻擊原理及類型
那么,這種攻擊是如何進(jìn)行的呢?總體說(shuō)來(lái),它分為兩種類型:其一是反射式攻擊,這種攻擊跟蹤網(wǎng)站通過(guò)cookies進(jìn)行的身份驗(yàn)證,這種網(wǎng)站一般都不太安全,容易遭受跨站腳本攻擊。使用社會(huì)工程(如告訴用戶“你中獎(jiǎng)了!”),如果目標(biāo)用戶受到誘騙,并單擊攻擊者注入到標(biāo)準(zhǔn)HTML代碼中的包含惡意代碼的鏈接,攻擊者就可以訪問(wèn)用戶的cookie信息(會(huì)話和身份驗(yàn)證信息等)。其二是存儲(chǔ)式攻擊,其原理是:假設(shè)某個(gè)網(wǎng)站利用后端數(shù)據(jù)庫(kù)作為搜索網(wǎng)頁(yè)的信息源,黑客們并不將惡意代碼注入到普通頁(yè)面中,而是將SQL代碼注入到這種數(shù)據(jù)庫(kù)中。于是,每次從后端數(shù)據(jù)庫(kù)中返回查詢結(jié)果時(shí),都會(huì)包含著攻擊者的惡意代碼??梢韵胂?,這種攻擊并不是針對(duì)哪個(gè)客戶端,而是感染整個(gè)論壇的用戶組,并感染大量的容易輕信的受害者。
2、防范措施最重要的是要保護(hù)代碼。
你應(yīng)當(dāng)限制用戶輸入信息的顯示,實(shí)施過(guò)濾,僅顯示絕對(duì)需要的信息。建議你驗(yàn)證并清理所有形式的數(shù)據(jù)、數(shù)據(jù)源,以及你無(wú)法直接控制的URL參數(shù)。
一個(gè)很實(shí)用的技巧是用HTML實(shí)體(如&)來(lái)代替特別字符。為了減少特定HTML字符的數(shù)量,你必須限制用戶輸入,僅準(zhǔn)許用于網(wǎng)站的合法代碼段。例如,許多論壇通過(guò)運(yùn)用標(biāo)記讓用戶輸入大寫字符,但是典型情況下,這些站點(diǎn)并不準(zhǔn)許你增添加自己的表單,所以不應(yīng)當(dāng)準(zhǔn)許表單。此外,如果這些標(biāo)記有特定的語(yǔ)法和值,那么你應(yīng)當(dāng)僅準(zhǔn)許與其語(yǔ)法保持一致的值(例如,字體顏色是一個(gè)僅包含字母A-F或數(shù)字0-9的三個(gè)或六個(gè)字符的值,所以,如果你準(zhǔn)許用戶輸入整個(gè)SQL語(yǔ)句,那么事情就糟了。)
此外,多數(shù)清理例程會(huì)用
標(biāo)記來(lái)替換回車符和換行符,以及一些有害的單詞,如“script”,這雖然依賴于具體的應(yīng)用程序,但是許多網(wǎng)站有理由使用這種單詞,所以這些措施很難普及。
下面給出幾個(gè)不安全的例子:
Python的例子:
print ""
ASP的例子:
將這種文本直接寫到HTML中會(huì)導(dǎo)致:
這里你可以看到的是合法的HTML,所以會(huì)得到處理:
下面給出幾個(gè)較安全的例子:
Python:
print cgi.escape("")
ASP:
跨站請(qǐng)求偽造
跨站請(qǐng)求偽造是另一種同源策略攻擊,它的目的是為了欺騙受害者加載一個(gè)包含惡意請(qǐng)求的網(wǎng)頁(yè),要求用戶輸入其賬戶及口令等。這種欺騙依賴于用戶對(duì)其身份信息的信任。用戶一般會(huì)認(rèn)為他們只是在執(zhí)行不同的任務(wù),只不過(guò)是使用一種HTTP請(qǐng)求。攻擊者借用用戶自己的瀏覽器將攻擊發(fā)送給目標(biāo)站點(diǎn)。
1、跨站請(qǐng)求偽造的原理
首先,攻擊者將達(dá)到惡意站點(diǎn)的鏈接發(fā)布到目標(biāo)站點(diǎn)上,然后,就會(huì)有一些輕信的用戶瀏覽惡意網(wǎng)站,從而成為受害者,更有甚者,會(huì)成為其幫兇。在用戶受到誘騙將表單提交給原始的目標(biāo)網(wǎng)站(最初被植入惡意鏈接的網(wǎng)站)時(shí),用戶就會(huì)成為攻擊者的幫兇。因?yàn)橛脩粢呀?jīng)通過(guò)了身份驗(yàn)證,所以目標(biāo)網(wǎng)站會(huì)接受表單提交請(qǐng)求,并準(zhǔn)許修改敏感數(shù)據(jù),如用戶自己的口令或從網(wǎng)站上獲取關(guān)鍵的信息。
2、保護(hù)代碼
首先,要通過(guò)檢查REQUEST鏈接請(qǐng)求來(lái)限制對(duì)POST或Web應(yīng)用程序的訪問(wèn)。
注意:有些瀏覽器會(huì)有一個(gè)空的鏈接請(qǐng)求,這也應(yīng)當(dāng)被阻止。
因而,相互認(rèn)證一般情況下是令牌化認(rèn)證的請(qǐng)求,即如果數(shù)據(jù)包含著一個(gè)適當(dāng)?shù)臋C(jī)密值,才可以接受粘貼數(shù)據(jù)。而且通過(guò)實(shí)行多個(gè)步驟的寫入過(guò)程或確認(rèn)頁(yè)面會(huì)強(qiáng)化這種安全機(jī)制。
總結(jié)
同源策略是一個(gè)在多數(shù)瀏覽器中實(shí)施的概念,但它可被XSS攻擊利用(它利用了一個(gè)用戶對(duì)于某個(gè)網(wǎng)站或應(yīng)用程序的信任),也可被XSRF利用(它利用了網(wǎng)站或應(yīng)用程序?qū)τ脩舻男湃危?/p>
那么,我們的策略簡(jiǎn)單地說(shuō)就是:絕不相信任何人!
不妨將信任看做是一個(gè)雙向的街道:你永遠(yuǎn)不會(huì)知道哪個(gè)方向會(huì)出現(xiàn)車流。任何人都可以潛入到信任關(guān)系的中間,并濫用這種信任關(guān)系。
因而,我給出如下要點(diǎn):
1、保護(hù)你的代碼和客戶端:對(duì)所有的遠(yuǎn)程數(shù)據(jù)輸入都進(jìn)行驗(yàn)證或過(guò)濾。
2、警告用戶不要隨意瀏覽,要教育用戶能夠確切地知道自己正在被導(dǎo)航到哪里。上述的相關(guān)內(nèi)容就是對(duì)解析跨站腳本攻擊與跨站請(qǐng)求偽造之道的描述,希望會(huì)給你帶來(lái)一些幫助。
【編輯推薦】