CSRF(Cross-site request forgery)跨站請求偽造,也被稱為“One Click Attack”或者Session Riding鳞芙,通常縮寫為CSRF或者XSRF期虾,是一種對網(wǎng)站的惡意利用原朝。盡管聽起來像跨站腳本(XSS),但它與XSS非常不同镶苞,XSS利用站點(diǎn)內(nèi)的信任用戶喳坠,而CSRF則通過偽裝來自受信任用戶的請求來利用受信任的網(wǎng)站。與XSS攻擊相比茂蚓,CSRF攻擊往往不大流行(因此對其進(jìn)行防范的資源也相當(dāng)稀少)和難以防范壕鹉,所以被認(rèn)為比XSS
更具危險(xiǎn)性。 --摘自百度百科
我在這里給大家舉個(gè)形象的例子來幫助大家理解聋涨。
攻擊通過在授權(quán)用戶訪問的頁面中包含鏈接或者腳本的方式工作晾浴。例如:一個(gè)網(wǎng)站用戶Bob可能正在瀏覽聊天論壇,而同時(shí)另一個(gè)用戶Alice也在此論壇中牍白,并且后者剛剛發(fā)布了一個(gè)具有Bob銀行鏈接的圖片消息脊凰。設(shè)想一下,Alice編寫了一個(gè)在Bob的銀行站點(diǎn)上進(jìn)行取款的form提交的鏈接淹朋,并將此鏈接作為圖片src(獲取圖片就是GET請求笙各,對方就能抓取到你的瀏覽器cookie和更多的請求頭)钉答。如果Bob的銀行在cookie中保存他的授權(quán)信息,并且此cookie沒有過期杈抢,那么當(dāng)Bob的瀏覽器嘗試裝載圖片時(shí)將提交這個(gè)取款form和他的cookie数尿,這樣在沒經(jīng)Bob同意的情況下便授權(quán)了這次事務(wù)。
CSRF是一種依賴web瀏覽器的惶楼、被混淆過的代理人攻擊(deputy attack)右蹦。在上面銀行示例中的代理人是Bob的web瀏覽器,它被混淆后誤將Bob的授權(quán)直接交給了Alice使用歼捐。
下面是CSRF的常見特性:
依靠用戶標(biāo)識危害網(wǎng)站
利用網(wǎng)站對用戶標(biāo)識的信任
欺騙用戶的瀏覽器發(fā)送HTTP請求給目標(biāo)站點(diǎn)
另外可以通過IMG標(biāo)簽會觸發(fā)一個(gè)GET請求何陆,可以利用它來實(shí)現(xiàn)CSRF攻擊。
防范:
- 使用圖片的CSRF攻擊常常出現(xiàn)在網(wǎng)絡(luò)論壇中豹储,因?yàn)槟抢镌试S用戶發(fā)布圖片而不能使用JavaScript贷盲。
- 當(dāng)我們用鼠標(biāo)在Blog/BBS/WebMail點(diǎn)擊別人留下的鏈接的時(shí)候,說不定一場精心準(zhǔn)備的CSRF攻擊正等著我們剥扣。
Springsecurity 和shiro都有對csrf的驗(yàn)證模塊巩剖,幫你更好的解決項(xiàng)目開發(fā)的這種風(fēng)險(xiǎn)。