python簡易實現的 csrf防護

上一篇講的是用flask-wtf這個庫實現csrf防護

https://blog.csdn.net/he93007/article/details/79980956

 

這篇講一下手動實現.

按業務流程來講

1 用戶發起了登錄請求

 {username:xxxx,passwd:xxxx}

 

2 後端查詢數據庫 用戶名密碼是否正確,是否存在用戶

 

3 存在用戶且密碼正確,我們則需要返回一個token.

查數據庫or緩存查看token(我們這裏只生成一次,所以查看token,你也可以每次都生成新的)

     有token返回它.,

如果已經過期或者沒有token.

    則生成一個新的token

 

python 有 uuid模塊

import uuid

# 方法指定一個32個字符構成的字符串來創建一個UUID對象

token=uuid.uuid1().hex

 

4 保存token,一般來說保存在mysql/postgresql 的用戶表裏的token字段就可以了,爲了高併發你也可以保存在

redis(緩存還能設置有效期)     比如 token_userid_123: xxxxxx

 

5 前端收到token

{code:200,msg:'登錄成功',token:'xxxxxxx'}

 

6 前端保存這個token

html5標準中一個亮點就是提供了瀏覽器本地存儲的功能.除了cookie

我們還可以存在localStorage裏面.並且有瀏覽器的同源策略的保護.

 

7 登錄狀態實現

前端訪問需要登錄的api時,可以先訪問瀏覽器localStorage,獲取token

將token放入請求中

{token:'xxxxx',adb:'abc',xyz:'xyz'} 

 

8 後端api驗證----需要登錄的api

獲取到前端的token.查詢緩存or數據庫.同時還能查詢出用戶信息.進行後續操作.

 

 

 

 

 

 

 

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