功能介紹
CSRF一般指跨站請求偽造。跨站請求偽造(英語:Cross-site request forgery),也被稱為 one-click attack 或者 session riding,通常縮寫為 CSRF 或者 XSRF, 是一種挾制用戶在當前已登錄的Web應用程序上執行非本意的操作的攻擊方法。針對發起CSRF攻擊進行防護。
背景信息
CSRF的攻擊場景
攻擊者盜用了用戶的身份,以用戶的名義發送惡意請求,對服務器來說這個請求是完全合法的,但是卻完成了攻擊者所期望的一個操作,比如以受攻擊者名義發送郵件、發消息,盜取賬號,添加系統管理員,甚至于購買商品、虛擬貨幣轉賬等。
CSRF的攻擊原理
1、用戶User打開瀏覽器,訪問受信任網站A,輸入用戶名和密碼請求登錄網站A;
2、在用戶信息通過驗證后,網站A產生Cookie信息并返回給瀏覽器,此時用戶登錄網站A成功,可以正常發送請求到網站A;
3、用戶未退出網站A之前,在同一瀏覽器中,打開一個TAB頁訪問網站B;
4、網站B接收到用戶請求后,返回一些攻擊性代碼,并發出一個請求要求訪問第三方站點A;
5、瀏覽器在接收到這些攻擊性代碼后,根據網站B 的請求,在用戶不知情的情況下攜帶Cookie 信息,向網站A 發出請求。網站A 并不知道該請求其實是由B 發起的,所以會根據用戶User 的Cookie 信息以User 的權限處理該請求,導致來自網站B 的惡意代碼被執行。
CSRF防護的方式
1、驗證碼
CSRF攻擊的過程,往往是在用戶不知情的情況下構造了網絡請求,驗證碼則強制用戶必須與應用進行交互才能完成最終請求。但基于使用體驗,網站不會給所有的操作都加上驗證碼。
2、驗證HTTP Referrer字段
根據 HTTP 協議,HTTP 頭部中Referrer字段記錄了該 HTTP 請求的來源地址。
比如一個論壇發帖的操作,在正常境況下需要先訪問有發帖功能的頁面,在提交發帖的表單時,Referrer值必然是發帖表單所在的頁面。如果Referrer的值不是這個頁面,甚至不是發帖網站的域,則極有可能是CSRF攻擊。
3、請求中添加token并驗證
在請求中放入黑客所不能偽造的信息,并且該信息不存在于Cookie 之中。可以在HTTP 請求中以參數的形式加入一個隨機產生的token,并在服務器端建立一個攔截器來驗證這個token,如果請求中沒有token 或者token 內容不正確,則認為可能是CSRF 攻擊而拒絕該請求。
前提條件
- 已開通Web應用防火墻(邊緣云版)
- 已新增域名并成功接入WAF,具體操作請見WAF接入
- 開通體驗版及以上版本支持使用CSRF防護功能
操作步驟
- 登錄
- 登錄web應用防火墻(邊緣云版)控制臺,在左側導航欄中選擇【域名管理】—【域名列表】,單擊域名列表操作【安全防護】進入高級防護頁面;
- 進入“CSRF防護”頁面,可以配置CSRF防護策略;
配置說明
配置項 說明 開關 開啟/關閉CSRF防護策略 處理動作 請求觸發CSRF防護后的處理動作,可以選擇告警或攔截 可信任域名 當請求referrer中含該域名,則該請求放行(可填多個域名,默認一級本域名)默認域名可進行修改 條件 1)防護范圍:設置要檢測的請求范圍,支持正則/字符串;支持配置多條防護粒度與防護范圍,多條防護粒度為且關系,多條防護范圍為或關系
URI:填寫包含/不包含防護的URI
METHOD:填寫包含/不包含的請求方法
PATH:填寫包含/不包含的PATH
2)合法referrer:填寫合法url,當請求referer精確匹配“合法referrer”,則該請求放行;
3)空referrer時執行操作:當請求沒有referrer這個字段時候的處理動作;跳轉,攔截,監控,放行(其中選擇跳轉后需要填跳轉目的地址,默認當前域名首頁);
4)不合法referrer時執行操作:當請求referer沒有在"可信任域名"、"合法referrer"中,該請求的處理動作,攔截,監控,放行(其中選擇跳轉后需要填跳轉目的地址,默認當前域名首頁)
注意:存在多條CSRF防護配置時,按照順序進行防護范圍的匹配,采用第一條命中防護范圍的策略