攻擊原理
CSRF攻擊是源于Web的隱式身份驗證機制!Web的身份驗證機制雖然可以保證一個請求是來自于某個用戶的瀏覽器,但卻無法保證該請求是用戶批準發(fā)送的。CSRF攻擊的一般是由服務(wù)端解決。
CSRF一般的攻擊過程是,攻擊者向目標網(wǎng)站注入一個惡意的CSRF攻擊URL地址(跨站url),當(登錄)用戶訪問某特定網(wǎng)頁時,如果用戶點擊了該URL,那么攻擊就觸發(fā)了,我們可以在該惡意的url對應(yīng)的網(wǎng)頁中,利用 <img src="" /> 來向目標網(wǎng)站發(fā)生一個get請求,該請求會攜帶cookie信息,所以也就借用了用戶的身份,也就是偽造了一個請求,該請求可以是目標網(wǎng)站中的用戶有權(quán)限訪問的任意請求。也可以使用javascript構(gòu)造一個提交表單的post請求。比如構(gòu)造一個轉(zhuǎn)賬的post請求。
所以CSRF的攻擊分為了兩步,首先要注入惡意URL地址,然后在該地址中寫入攻擊代碼,利用<img> 等標簽或者使用Javascript腳本。
下面是CSRF的常見特性:
1.依靠用戶標識危害網(wǎng)站
2.利用網(wǎng)站對用戶標識的信任
3.欺騙用戶的瀏覽器發(fā)送HTTP請求給目標站點
4.另外可以通過IMG標簽會觸發(fā)一個GET請求,可以利用它來實現(xiàn)CSRF攻擊

CSRF防御
1.通過 referer、token 或者 驗證碼 來檢測用戶提交。
2.盡量不要在頁面的鏈接中暴露用戶隱私信息。
3.對于用戶修改刪除等操作最好都使用post 操作 。
4.避免全站通用的cookie,嚴格設(shè)置cookie的域。