跨站請求偽造(csrf)的防護手段


CSRF

  • CSRF全拼為Cross Site Request Forgery,譯為跨站請求偽造。
  • CSRF指攻擊者盜用了你的身份,以你的名義發送惡意請求。
  • 造成的問題:個人隱私泄露以及財產安全。

CSRF攻擊示意圖

  • 客戶端訪問服務器時沒有同服務器做安全驗證

  • 總結一下,簡單的csrf攻擊是通過用戶已經產生cookie的情況且未退出登錄,釣魚網站通過偽造頁面來請求原始網站處理業務,達到模擬用戶操作的目的

防止 CSRF 攻擊

方式一:可以通過驗證碼的手段,因為驗證碼是直接發到用戶的手里,所以黑客破解的成功性不大

方式二:在沒有驗證碼的年代,可以通過生成隨機的token來校驗網站是否正確

步驟
  1. 在客戶端向后端請求界面數據的時候,后端會往響應中的 cookie 中設置 csrf_token(隨機變化) 的值
  2. 在 Form 表單中添加一個隱藏的的字段,值也是 csrf_token
  3. 在用戶點擊提交的時候,會帶上這兩個值向后台發起請求
  4. 后端接受到請求,以會以下幾件事件:
    • 從 cookie中取出 csrf_token
    • 從 表單數據中取出來隱藏的 csrf_token 的值
    • 進行對比
  5. 如果比較之后兩值一樣,那么代表是正常的請求,如果沒取到或者比較不一樣,代表不是正常的請求,不執行下一步操作

可能有的人會問,把這么重要的csrf_token放到cookie里不是很不安全嗎,隨便一個F12就可以看到cookie,黑客獲取cookie不照樣可以模擬用戶的行為嗎

注:因為同源策略,即協議,域名,端口都相同的情況下為同源,瀏覽器帶有同源策略,在沒有明確授權的前提下,不同源之間不能進行資源訪問,也就是說釣魚網站無法拿到原始網站的cookie,模擬不了業務處理,這也是為什么我們要把csrf_token放到cookie中,確保網站業務處理時的安全


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM