CSRF 跨站請求僞造 原理及解決方案

1.什麼是CSRF       

  CSRF全拼爲Cross Site Request Forgery,譯爲跨站請求僞造。

  CSRF指攻擊者盜用了你的身份,以你的名義發送惡意請求。

    包括:以你名義發送郵件,發消息,盜取你的賬號,甚至於購買商品,虛擬貨幣轉賬......

     造成的問題:個人隱私泄露以及財產安全。

2. CSRF具體流程:

 

 3.如何防止CSRF攻擊 

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

 4.在flask項目中如何解決CSRF

           Flask 中, Flask-wtf 擴展有一套完善的 csrf 防護體系,對於我們開發者來說,使用起來非常簡單

      演示代碼如下:

 

        設置應用程序的 secret_key

        用於加密生成的 csrf_token 的值   

         只需要在寫好的前端表單代碼中在加一行{{form.csrf_token()}}

app.secret_key = "#此處可以寫隨機字符串#"
<form method="post">
    {{ form.csrf_token() }}
    {{ form.username.label }} {{ form.username }}<br/>
    {{ form.password.label }} {{ form.password }}<br/>
    {{ form.password2.label }} {{ form.password2 }}<br/>
    {{ form.submit }}
</form>

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章