CSRF(跨站請求偽造)
簡單場景
基本流程:假設A網站是合法的,B網站是惡意網站
小明是一個A網站的注冊用戶,一般登陸后,網站都會把用戶憑證放在cookie中,在一定時期內小明再訪問A網站就不需要重新登陸了。
假設在這個有效期內,小明訪問了B網站的一個惡意鏈接(可以是點擊也可是打開網頁等),B網站精心設置了一系列操作,利用小明A網站的登陸信息訪問了A網站的一系列接口。比如刪除接口等等。
案例舉到這里可以看出,要實現CSRF攻擊主要滿足:
1.A網站對應的接口要有漏洞
2.小明已經登陸了A網站,具有憑證
如何防御?
1.設置cookie的SameSite屬性
由于CSRF相當于利用登陸用戶的cookie(不能修改),而SameSite屬性只有同一個網站才可以使用
缺點:這個屬性目前兼容性比較差

2.服務端驗證客戶端請求中的refer字段
r缺點:refer可以比較容易的進行抓包修改
3.在網站前端(A網站)設置csrf_token
對應post請求可以再表單中添加隱藏的input標簽,設置值為csrf_token
對于get請求可以設置在meta標簽中等
然后每次刷新頁面csrf_token需要改變,可以在cookie中也設置csrf_token,然后服務端判斷兩個cookie是否相等決定響應