1. 程式人生 > 實用技巧 >CSRF 跨站請求偽造攻擊

CSRF 跨站請求偽造攻擊

CSRF 跨站請求偽造攻擊

CSRF 原理

  下圖大概描述了 CSRF 攻擊的原理,可以理解為有一個小偷在你配鑰匙的地方得到了你家的鑰匙,然後拿著要是去你家想偷什麼偷什麼。

CSRF 攻擊必須要有三個條件:

(1)使用者已經登入了站點 A,並在本地記錄了 cookie
(2)在使用者沒有登出站點 A 的情況下(也就是 cookie 生效的情況下),
    訪問了惡意攻擊者提供的引誘危險站點 B (B 站點要求訪問站點A);
(3)站點 A 沒有做任何 CSRF 防禦

預防 CSRF

CSRF 的防禦可以從服務端和客戶端兩方面著手,防禦效果是從服務端著手效果比較好,
現在一般的 CSRF 防禦也都在服務端進行。服務端的預防 CSRF 攻擊的方式方法有多種,
但思路上都是差不多的,主要從以下兩個方面入手:

(1)正確使用 GET,POST 請求和 cookie

(2)在非 GET 請求中增加 token

一般而言,普通的 Web 應用都是以 GET、POST 請求為主,還有一種請求是 cookie 方式。
我們一般都是按照如下規則設計應用的請求:

(1)GET 請求常用在檢視,列舉,展示等不需要改變資源屬性的時候(資料庫 query 查詢的時候)

(2)POST 請求常用在 From 表單提交,改變一個資源的屬性或者做其他一些事情的時候
   (資料庫有 insert、update、delete 的時候)