概念
CSRF全稱即Cross Site Request forgery,跨站點請求僞造,攻擊者通過跨站點進行僞造使用者的請求進行合法的非法操作,其攻擊手法是通過竊取使用者cookie或伺服器session擷取使用者身份,在使用者不知情的情況下在攻擊者伺服器模拟僞造使用者真實的請求。
防禦手段
既然是跨站點攻擊,是以防禦的手段無非是識别請求的來源是否合法。
防禦的手段一般有:
1、檢查referer
referer是http header的請求頭屬性,辨別了請求的來源位址,通過檢查這個屬性可以判斷請求位址是否合法域名。很多網站的防盜鍊功能就是這麼做的,如果不是本站的域名請求就拒絕其連結,或者傳回一個不允許在外站顯示的公共圖檔。
2、檢查表單token
在跳轉到每個表單時,每次都随機生成一個不固定的token值用于回傳驗證,是以如果是使用者正常送出的話肯定會包含這個值,而這個值不存在cookie中攻擊者拿不到這個值,自然送出的請求是不合法的。如果不使用cookie的前提下也可以設定cookie為httpOnly禁止腳本擷取到cookie資訊。
3、檢查驗證碼
使用驗證碼,簡單粗暴,判斷請求的驗證碼是否但使用者體檢會非常差,使用者不希望所有的操作都要輸入驗證碼,是以,不是非常重要的環節建議不要使用驗證碼。
關注公衆号Java技術棧回複"面試"擷取我整理的2020最全面試題及答案。
推薦去我的部落格閱讀更多:
1.Java JVM、集合、多線程、新特性系列教程
2.Spring MVC、Spring Boot、Spring Cloud 系列教程
3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程
4.Java、後端、架構、阿裡巴巴等大廠最新面試題
覺得不錯,别忘了點贊+轉發哦!