2019-06-19

防御CSRF攻擊的幾種方式

1.盡量采用post,少用get

該方法的局限性比較大,只能在一定程度上防御CSRF攻擊,現(xiàn)在已經(jīng)基本不采用此方式。

2.設(shè)置refer

這種方式是利用設(shè)置refer,來限制訪問服務(wù)器的站點,只允許與refer設(shè)置的站點相同的網(wǎng)站才能訪問服務(wù)器。這種方式也有比較大的局限性,因為在某些低版本的瀏覽器中,refer是可以被篡改的,所以說也不安全。

3.驗證碼

這個方式是最徹底最簡單的方式了,每次訪問的時候都要輸入驗證碼,簡單粗暴,完全能夠防御CSRF帶來的攻擊。但是缺點就是影響用戶體驗,每次都要輸入驗證碼太惡心了,所以說我們只在比較重要的請求的地方設(shè)置驗證碼。

4.token驗證

這是現(xiàn)在用的最多的一種方式了,用戶登錄成功之后,服務(wù)器將用戶信息自動生成一個token返回給客戶端,同時也將這個token信息保存在服務(wù)器的某個地方(現(xiàn)在一般都是保存在redis中),客戶端需要將這個token保存起來,一般是放在cookie或者sessionStorage中,以后只要再次請求的時候,都會從客戶端保存token的地方取出token,并且?guī)蟭oken去訪問服務(wù)器,服務(wù)器端token驗證不通過的話就拒絕訪問,這是目前使用最多的一種防御CSRF攻擊的方式。

5.自定義header

自定義header是第四種方式的一種擴展,它是把客戶端取出來的token放到請求頭中,然后服務(wù)器通過驗證請求頭的token信息。下面是一個例子:

通過上面兩個圖片你可以明顯看到當(dāng)發(fā)送請求的時候,會先從cookie中取出token放入請求頭的Authorization中,這也就是我們常說的權(quán)限驗證,來解釋一下為什么這樣做可以防御csrf攻擊。因為偽造請求都是通過一些沒有跨域限制的標簽來偽造的,他們是無法給自己添加請求頭的,所以說雖然他們可以正常的讓瀏覽器攜帶cookie,但是無法添加我們手動設(shè)置的請求頭,自然也就不會驗證通過。這篇文章就到這里了,下一篇準備講一下http請求阻塞的問題

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • http://www.91ri.org/tag/fuzz-bug 通常情況下,有三種方法被廣泛用來防御CSRF攻擊...
    jdyzm閱讀 4,395評論 0 5
  • CSRF攻擊的詳細解讀 CSRF(跨站請求偽造)對于前端開發(fā)人員來說肯定是不陌生的,因為這是一種常見的前端攻擊的方...
    czpDepRoad閱讀 1,160評論 0 1
  • CSRF & CORS 下面轉(zhuǎn)的兩篇文章分別說明了以下兩個概念和一些解決方法: 1. CSRF - Cross-S...
    Elvis_zhou閱讀 844評論 0 4
  • 本文是 Django 官網(wǎng)文檔的翻譯。官網(wǎng)鏈接:https://docs.djangoproject.com/en...
    學(xué)以致用123閱讀 5,933評論 0 5
  • CSRF全稱Cross-Site Request Forgery跨站請求偽造,也被稱為One Click Atta...
    JunChow520閱讀 1,124評論 0 5

友情鏈接更多精彩內(nèi)容