java csrf是什么,讓我們一起了解一下:
csrf是一種挾制用戶在當(dāng)前已登錄的Web應(yīng)用程序上執(zhí)行非本意的操作的攻擊方法。攻擊者誘導(dǎo)受害者進(jìn)入第三方網(wǎng)站,在第三方網(wǎng)站中,向被攻擊網(wǎng)站發(fā)送跨站請(qǐng)求。
實(shí)戰(zhàn)操作:假設(shè)bbs系統(tǒng)以HTTP GET請(qǐng)求方式來刪除帖子,攻擊者在惡意網(wǎng)站加入以下HTML代碼段。
CSRF攻擊者在MW中嵌入上述標(biāo)簽,一旦用戶訪問該網(wǎng)站將導(dǎo)致帖子被刪除,顯然用戶沒想過要?jiǎng)h除帖子。那有人會(huì)問了,既然HTTP GET方式會(huì)導(dǎo)致帖子會(huì)被刪除,那么我改用POST方式不就可以了。
為解決上面的問題,bbs程序員將刪除帖子的方式改用POST表單提交方式。
實(shí)際上前端頁面改用POST方式還是會(huì)存在兩個(gè)問題,一是java后端程序員如果編寫Servlet或者SpringMVC控制器中時(shí)沒有很好地區(qū)分出POST與GET請(qǐng)求時(shí),那么以request.getAttribute()或者request.getParameter()方式獲取客戶單請(qǐng)求參數(shù),那么還是無法判斷出請(qǐng)求是來自POST還是GET的。
假設(shè)不存在第一個(gè)問題,那是不是真的就不存在問題了呢。其實(shí)你在頁面改用POST請(qǐng)求,那么攻擊者在惡意頁面中也可以改用POST方式,正所謂以其人之道還治其人之身。如下代碼示例:
???? ????????
顯然,一旦訪問該頁面還是會(huì)遭受攻擊,因此改用POST方式來防御CSRF是治標(biāo)不治本。
最后,我們要正確使用java csrf,來解決正當(dāng)?shù)膯栴},來維護(hù)網(wǎng)絡(luò)安全。
以上就是小編今天的分享了,希望可以幫助到大家。