CSRF: Cross Site Request Forgy 跨站請求偽造
第三方網(wǎng)站在用戶不知情的情況下叠殷,誘導(dǎo)用戶點擊,或利用用戶登陸憑證(Cookie)偽造請求揖庄。
CSRF.png
1.危害
用戶不知情的情況下栗菜,獲取用戶敏感信息,利用用戶賬號發(fā)帖蹄梢,盜取資金(轉(zhuǎn)賬疙筹、消費)等
2.防御
1)禁止第三方網(wǎng)站帶Cookie
在Cookie中設(shè)置sameSite屬性(只有Chrome支持)
2)提交前加一個圖形驗證碼
Node庫ccap可以自動生成圖形驗證碼
每次get的時候后端保留驗證碼text,并返回圖形驗證碼
每次post的時候校驗用戶提交的驗證碼
3)請求中加一個CSRF token
Node庫csurf
創(chuàng)建一個中間件,中間件加入req.csrfToken()函數(shù)腌歉,可以生成CSRF token蛙酪,并將token加入到Cookie和request header(或form表單)中。
對比兩個token一致才能通過翘盖。