csrf攻擊的防御措施 csrf 防范



文章插圖
csrf攻擊的防御措施 csrf 防范

文章插圖
【csrf攻擊的防御措施 csrf 防范】說到CSRF很多小伙伴應該很清楚了,不清楚也沒關系,我們下面就來探討一下 。
跨站請求偽造(英語:Cross-site request forgery),也被稱為 one-click attack 或者 session riding,通常縮寫為 CSRF 或者 XSRF,是一種挾制用戶在當前已登錄的Web應用程序上執行非本意的操作的攻擊方法 。跟跨網站腳本(XSS)相比,XSS 利用的是用戶對指定網站的信任,CSRF 利用的是網站對用戶網頁瀏覽器的信任 。
以上內容來自百度百科
那么接下來我們詳細討論一下跨站請求偽造:
跨站請求攻擊,簡單地說,是攻擊者通過一些技術手段欺騙用戶的瀏覽器去訪問一個自己曾經認證過的網站并運行一些操作(如發郵件,發消息,甚至財產操作如轉賬和購買商品) 。由于瀏覽器曾經認證過,所以被訪問的網站會認為是真正的用戶操作而去運行 。這利用了web中用戶身份驗證的一個漏洞:簡單的身份驗證只能保證請求發自某個用戶的瀏覽器,卻不能保證請求本身是用戶自愿發出的 。
理解 CSRF 攻擊的最好方法是看一個具體的例子 。
假設您的銀行網站提供了一個表單,允許將資金從當前登錄的用戶轉移到另一個銀行賬戶 。例如,轉賬表格可能如下所示:
<form method = "post"action = "/transfer" ><input type = "text"name = "amount" /><input type = "text"name = "routingNumber" /><input type = "text"name = "account" /><輸入類型= “提交”值= “傳輸” /></form>相應的 HTTP 請求可能如下所示:
傳輸 HTTP 請求
POST /傳輸 HTTP/1.1
主機:bank.example.com
Cookie:JSESSIONID=randomid
內容類型:應用程序/x-www-form-urlencoded
金額=100.00&routingNumber=1234&account=9876
現在假設您對銀行網站進行了身份驗證,然后在不注銷的情況下訪問一個邪惡的網站 。該邪惡網站包含一個 HTML 頁面,其格式如下
邪惡轉移形式
<form method = "post"action = "https://bank.example.com/transfer" ><input type = "hidden"name = "amount"value = "http://www.mnbkw.com/jxjc/188470/100.00" /><input type = "hidden"name = "routingNumber"value = "http://www.mnbkw.com/jxjc/188470/evilsRoutingNumber" /><input type = "hidden"name = "account"value = "http://www.mnbkw.com/jxjc/188470/evilsAccountNumber" /><input type = "submit"value = "http://www.mnbkw.com/jxjc/188470/Win Money!" /></form>你喜歡贏錢,所以你點擊提交按鈕 。在此過程中,您無意中向惡意用戶轉移了 100 美元 。發生這種情況的原因是,雖然惡意網站無法看到您的 cookie,但與您的銀行關聯的 cookie 仍會隨請求一起發送 。
最糟糕的是,這整個過程本可以使用 JavaScript 實現自動化 。這意味著您甚至不需要單擊按鈕 。此外,在訪問作為XSS 攻擊受害者的誠實站點時,它也很容易發生 。那么我們如何保護我們的用戶免受此類攻擊呢?
那么我們又有哪些方式可以解決,或者避免這種CSRF攻擊呢,歡迎留下大家的見解