1. 河豚號 > 生活百科 >

csrf攻擊防范的方法(csrf攻擊原理與解決技巧)

說到CSRF很多小伙伴應該很清楚了,不清楚也沒關系,我們下面就來探討一下。

跨站請求偽造(英語:Cross-site request forgery),也被稱為 one-click attack 或者 session riding,通常縮寫為 CSRF 或者 XSRF, 是一種挾制用戶在當前已登錄的Web應用程序上執(zhí)行非本意的操作的攻擊方法。跟跨網站腳本(XSS)相比,XSS 利用的是用戶對指定網站的信任,CSRF 利用的是網站對用戶網頁瀏覽器的信任。

以上內容來自百度百科

那么接下來我們詳細討論一下跨站請求偽造:

 

如何避免CSRF攻擊,你用到過嗎?

 

跨站請求攻擊,簡單地說,是攻擊者通過一些技術手段欺騙用戶的瀏覽器去訪問一個自己曾經認證過的網站并運行一些操作(如發(fā)郵件,發(fā)消息,甚至財產操作如轉賬和購買商品)。由于瀏覽器曾經認證過,所以被訪問的網站會認為是真正的用戶操作而去運行。這利用了web中用戶身份驗證的一個漏洞:簡單的身份驗證只能保證請求發(fā)自某個用戶的瀏覽器,卻不能保證請求本身是用戶自愿發(fā)出的。

理解 CSRF 攻擊的最好方法是看一個具體的例子。

假設您的銀行網站提供了一個表單,允許將資金從當前登錄的用戶轉移到另一個銀行賬戶。例如,轉賬表格可能如下所示:

 

action = "/transfer" >

name = "amount" />

name = "routingNumber" />

name = "account" />

<輸入類型= “提交”

值= “傳輸” />

 

 

相應的 HTTP 請求可能如下所示:

傳輸 HTTP 請求

POST /傳輸 HTTP/1.1

主機:bank.example.com

Cookie:JSESSIONID=randomid

內容類型:應用程序/x-www-form-urlencoded

金額=100.00&routingNumber=1234&account=9876

現在假設您對銀行網站進行了身份驗證,然后在不注銷的情況下訪問一個邪惡的網站。該邪惡網站包含一個 HTML 頁面,其格式如下

邪惡轉移形式

 

action = "https://bank.example.com/transfer" >

name = "amount"

value = "100.00" />

name = "routingNumber"

value = "evilsRoutingNumber" />

name = "account"

value = "evilsAccountNumber" />

value = "Win Money!" />

 

 

你喜歡贏錢,所以你點擊提交按鈕。在此過程中,您無意中向惡意用戶轉移了 100 美元。發(fā)生這種情況的原因是,雖然惡意網站無法看到您的 cookie,但與您的銀行關聯的 cookie 仍會隨請求一起發(fā)送。

最糟糕的是,這整個過程本可以使用 JavaScript 實現自動化。這意味著您甚至不需要單擊按鈕。此外,在訪問作為XSS 攻擊受害者的誠實站點時,它也很容易發(fā)生。那么我們如何保護我們的用戶免受此類攻擊呢?

那么我們又有哪些方式可以解決,或者避免這種CSRF攻擊呢,歡迎留下大家的見解

本文由網上采集發(fā)布,不代表我們立場,轉載聯系作者并注明出處:http://m.zltfw.cn/shbk/38585.html

聯系我們

在線咨詢:點擊這里給我發(fā)消息

微信號:15705946153

工作日:9:30-18:30,節(jié)假日休息