官术网_书友最值得收藏!

4.2 通過GET請求發起CSRF攻擊

惡意網站利用Bob網銀的方式取決于銀行是通過GET請求還是通過POST請求接受轉賬申請的。如果Bob的網銀接受通過GET請求進行轉賬,惡意網站就會發送具有隱藏表單或者<img>標簽的HTTP請求。GET和POST方法都依賴于能夠讓瀏覽器發送需要的HTTP請求的HTML語法,并且兩種方法都可以采用隱藏表單技術,但是只有GET方法可以使用<img>標簽技術。在本節中,我們將研究一下當使用GET請求時如何使用HTML<img>標簽技術來實現攻擊,在4.3節中,我們再來研究隱藏表單技術。

攻擊者需要在發送給鮑勃網銀的HTTP轉賬請求中包含Bob的cookie信息。但是因為攻擊者沒有辦法讀取到Bob的cookie,所以他不能只是簡單地生成一個HTTP請求并發送給Bob的網銀。相反,攻擊者可以使用HTML的<img>標簽來精心生成一個包含Bob cookie的GET請求。<img>標簽對網頁上的圖像進行渲染,并且包含一個用來告訴瀏覽器去哪里定位圖像文件的src屬性。當瀏覽器渲染<img>標簽時,它會向標簽的src屬性發起一個包含任何已有的cookie的HTTP GET請求。因此,假定惡意網站使用類似如下從Bob的賬號轉賬500美元到Joe的賬號的URL:

那么惡意<img>標簽將使用這個URL作為它的資源值,如下所示:

結果是,當Bob訪問攻擊者控制的網站時,網站會在其HTTP響應中包含上面的<img>標簽,從而瀏覽器會進一步發起向銀行的HTTP GET請求。瀏覽器發送Bob的身份認證信息以獲取其認為的對應圖片的相關資源信息。但是實際上,銀行接收到了這個請求,處理了URL中的<img>標簽的src屬性,生成了轉賬申請。

為了避免該漏洞,開發者應該永不使用HTTP GET請求去執行任何后續的數據修改申請,例如轉賬資金。但是,任何具有只讀屬性的請求都應該是安全的。許多用于創建網站的通用網站框架,例如Ruby On Rails、Django等,都假定開發者遵循這一準則,因此它們都自動地在POST請求而不是GET請求中增加CSRF防護手段。

主站蜘蛛池模板: 新和县| 磴口县| 汝南县| 岳阳县| 元江| 含山县| 吴旗县| 南开区| 宝坻区| 金川县| 尼勒克县| 阳原县| 体育| 山西省| 酒泉市| 织金县| 湛江市| 蓬莱市| 新宾| 屯昌县| 枞阳县| 庆元县| 和田县| 建水县| 儋州市| 博罗县| 赤城县| 嵊泗县| 灵台县| 双城市| 北碚区| 东方市| 霸州市| 台前县| 张家港市| 万载县| 余江县| 平远县| 自治县| 富源县| 英超|