分享一個大牛的人工智能教程,零基礎!通俗易懂!風趣幽默!希望你也加入到人工智能的隊伍中來!請輕擊http://www.captainbed.net
CSRF(Cross-Site Request Forgery),中文名稱:跨站請求偽造,也被稱為:one click attack / session riding,縮寫為:CSRF/XSRF,是一種對網站的惡意利用,盡管聽起來像跨站腳本(XSS),但它與XSS非常不同,并且攻擊方式幾乎相左,
XSS利用站點內的信任用戶,而CSRF則通過偽裝來自受信任用戶的請求來利用受信任的網站,與XSS攻擊相比,CSRF攻擊往往不大流行(攻擊的條件要求高)和難以防范,所以被認為比XSS更具危險性,
如何防范CSRF攻擊?
一、CSRF攻擊的原理
要完成一次CSRF攻擊,必須依次完成4個步驟:
1、登錄受信任網站網站A,比如是某銀行網站,你去查賬,該網站會在本地生成Cookie,
2、在不登出某銀行網站A的情況下,或者關閉網頁但是Cookie沒有過期的時候,去訪問危險網站B,
3、危險網站B,做了一些馬腳,它在網頁上放了一個圖片<img src="銀行網站A轉賬請求鏈接">,訪問時就會自動發出一個GET型別的轉賬請求向銀行網站A,或者是通過<iframe>發送了一個POST轉賬請求的表單向銀行網站A,它會帶著之前沒有失效的銀行網站A的Cookie,
4、銀行網站A收到該請求,驗證Cookie通過,發起轉賬,然后你的錢就不見了,
CSRF攻擊是源于WEB的隱式身份驗證機制!WEB的身份驗證機制雖然可以保證一個請求是來自于某個用戶的瀏覽器,但卻無法保證該請求是用戶批準發送的!
二、如何CSRF防御
CSRF的防御可以從服務端和客戶端兩方面著手,防御效果是從服務端著手效果比較好,現在一般的CSRF防御也都在服務端進行,下面說幾種比較常用的解決方法:
1、驗證碼
這個方案的思路是:每次的用戶提交都需要用戶在表單中填寫一個圖片上的隨機字串,或則重要業務請求要短信驗證碼等,這個方案可以完全解決CSRF,但個人覺得在易用性方面似乎不是太好,對于用戶體驗也非常差,
2、Referer Check
Referer Check在Web最常見的應用就是“防止圖片盜鏈”,同理,Referer Check也可以被用于檢查請求是否來自合法的“源”(Referer值是否是指定頁面,或者網站的域),如果都不是,那么就極可能是CSRF攻擊,但是因為服務器并不是什么時候都能取到Referer,所以也無法作為CSRF防御的主要手段,但是用Referer Check來監控CSRF攻擊的發生,倒是一種可行的方法,
3、Anti CSRF Token
現在業界對CSRF的防御,一致的做法是使用一個Token(Anti CSRF Token),
原理:
用戶訪問某個表單頁面,服務端生成一個Token,放在用戶的Session中,或者瀏覽器的Cookie中,在頁面表單附帶上Token引數,用戶提交請求后,服務端驗證表單中的Token是否與用戶Session(或Cookie)中的Token一致,一致為合法請求,不一致則是非法請求,
這個Token的值必須是隨機的,不可預測的,由于Token的存在,攻擊者無法再構造一個帶有合法Token的請求實施CSRF攻擊,另外使用Token時應注意Token的保密性,盡量把敏感操作由GET改為POST,以form或AJAX形式提交,避免Token泄露,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/401556.html
標籤:其他
上一篇:瀏覽器安全概述
下一篇:第二屆BMZCTF網路安全公開賽
