CSRF 攻擊原理和防護方法

1. CSRF攻擊原理javascript

CSRF(Cross site request forgery),即跨站請求僞造。咱們知道XSS是跨站腳本攻擊,就是在用戶的瀏覽器中執行攻擊者的腳本,來得到其cookie等信息。而CSRF確實,借用用戶的身份,向web server發送請求,由於該請求不是用戶本意,因此稱爲「跨站請求僞造」。php

通常並且存在XSS漏洞的網站,也極有可能存在CSRF漏洞。由於CSRF攻擊中的那個「僞造的請求」的URL地址,通常是經過XSS攻擊來注入到服務器中的。因此其實CSRF是以XSS爲基礎的,也能夠看作是XSS攻擊的一種。html

CSRF通常的攻擊過程是,攻擊者向目標網站注入一個惡意的CSRF攻擊URL地址(跨站url),當(登陸)用戶訪問某特定網頁時,若是用戶點擊了該URL,那麼攻擊就觸發了,咱們能夠在該惡意的url對應的網頁中,利用 <img src="" /> 來向目標網站發生一個get請求,該請求會攜帶cookie信息,因此也就借用了用戶的身份,也就是僞造了一個請求,該請求能夠是目標網站中的用戶有權限訪問的任意請求。也可使用javascript構造一個提交表單的post請求。好比構造一個轉帳的post請求。java

因此CSRF的攻擊分爲了兩步,首先要注入惡意URL地址,而後在該地址中寫入攻擊代碼,利用<img> 等標籤或者使用Javascript腳本。web

2. CSRF防護瀏覽器

2.1 referer服務器

由於僞造的請求通常是從第三方網站發起的,因此第一個防護方法就是判斷 referer 頭,若是不是來自本網站的請求,就斷定爲CSRF攻擊。可是該方法只能防護跨站的csrf攻擊,不能防護同站的csrf攻擊(雖然同站的csrf更難)。cookie

2.2 使用驗證碼post

每個重要的post提交頁面,使用一個驗證碼,由於第三方網站是沒法得到驗證碼的。還有使用手機驗證碼,好比轉帳是使用的手機驗證碼。網站

2.3 使用token

每個網頁包含一個web server產生的token, 提交時,也將該token提交到服務器,服務器進行判斷,若是token不對,就斷定位CSRF攻擊。

將敏感操做又get改成post,而後在表單中使用token. 儘可能使用post也有利於防護CSRF攻擊。

3. 有價值的參考

http://www.ibm.com/developerworks/cn/web/1102_niugang_csrf/

http://drops.wooyun.org/papers/155

http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html#!comments

https://www.owasp.org/index.php/Category:OWASP_CSRFGuard_Project

http://www.hanguofeng.com/archives/security/preventing-csrf

4. 使用 OWASP CSRFGuard 防護 CSRF

https://www.owasp.org/index.php/Category:OWASP_CSRFGuard_Project

https://www.owasp.org/index.php/CSRFGuard_3_User_Manual

http://blog.csdn.net/testing_is_believing/article/details/11672553

相關文章
相關標籤/搜索