* 跨站請求偽造漏洞利用的重點攻擊者了解受害者所在的站點
* 跨站請求偽造漏洞的技術(shù)重點在于攻擊者需要精心構(gòu)造可以完成目標(biāo)裝點數(shù)據(jù)修改的URL
* 跨站請求偽造漏洞的方法重點在于攻擊者的目標(biāo)站點具有持久化授權(quán)cookie或者受害者具有當(dāng)前會話cookie,并且目標(biāo)站點沒有對用戶在網(wǎng)站行為的第二授權(quán)
我們假定三個角色:攻擊者、用戶、網(wǎng)上銀行、一個論壇。
攻擊的流程主要分以下幾個步驟:
1、用戶連入網(wǎng)上銀行操作,該網(wǎng)上銀行使用持久化授權(quán)cookie,只要用戶不清除cookies,任何時候連入網(wǎng)上銀行時,該銀行網(wǎng)站都認(rèn)為該用戶是有效的;
2、攻擊者在論壇上發(fā)表圖片,內(nèi)嵌有GET或POST方法的URL并指向該網(wǎng)上銀行,如果該URL由一個銀行的合法用戶發(fā)出,則該URL會使用戶帳戶被修改;
3、用戶瀏覽此論壇并點擊該圖片,攻擊者預(yù)設(shè)的URL被由用戶發(fā)往銀行站點,因該用戶未清除cookie,該請求有效,用戶帳戶在用戶并不知情的前提下被成功修改。
我們注意到,這個過程很象跨站腳本攻擊,但實際上,是完全不同的。跨站腳本攻擊需要在客戶端寫入惡意代碼,以搜集cookie等信息,而跨站請求偽造則根本不需要向用戶端寫入任何東西,直接利用銀行授權(quán)的持久認(rèn)證和用戶未清理的cookie。
這里的問題在于,論壇用戶不能上傳js腳本,于是直接利用URL來誘騙用戶,以致于完成數(shù)據(jù)操作。
由此可見,該攻擊的重點在于要知道目標(biāo)站點和目標(biāo)用戶,并且該受害站點沒有使用更多的授權(quán)認(rèn)證。
對于web站點,將持久化的授權(quán)方法(例如cookie或者HTTP授權(quán))切換為瞬時的授權(quán)方法(在每個form中提供隱藏field),這將幫助網(wǎng)站防止這些攻擊。一種類似的方式是在form中包含秘密信息、用戶指定的代號作為cookie之外的驗證。
另一個可選的方法是“雙提交”cookie。此方法只工作于Ajax請求,但它能夠作為無需改變大量form的全局修正方法。如果某個授權(quán)的 cookie在form post之前正被java script代碼讀取,那么限制跨域規(guī)則將被應(yīng)用。如果服務(wù)器需要在Post請求體或者URL中包含授權(quán)cookie的請求,那么這個請求必須來自于受信任的域,因為其它域是不能從信任域讀取cookie的。