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

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