Django API驗證(令牌)

2022-09-17 05:24:14 字數 3444 閱讀 6171

1. 獲取介面資訊

client端

import

requests

import

time

import

hashlib

ctime =time.time()

key = '

akfljakfjaklfjaklfj22222324290482

'new_key = "

%s|%s

" %(key, ctime)

m =hashlib.md5()

m.update(bytes(new_key, encoding='

utf-8'))

md5_key =m.hexdigest()

md5_key_key = "

%s|%s

" %(md5_key, ctime)

print

(md5_key_key)

response = requests.get("

", headers=)

print(response.text)

2. 驗證令牌資訊

server端

#第一關:時間關 10s內訪問

[第一關] 訪問時間超時!')

#第二關:規則關 防止修改時間

[第二關] 規則不正確')

for k in

list(api_key_record.keys()):

v =api_key_record[k]

if server_time >v:

delapi_key_record[k]

#第三關

[第三關] 令牌已使用過')

get: 獲取重要資料')

3. 模擬請求

正常請求:nomary get請求

import

requests

import

time

import

hashlib

ctime =time.time()

key = '

akfljakfjaklfjaklfj22222324290482

'new_key = "

%s|%s

" %(key, ctime)

m =hashlib.md5()

m.update(bytes(new_key, encoding='

utf-8'))

md5_key =m.hexdigest()

md5_key_key = "

%s|%s

" %(md5_key, ctime)

print

(md5_key_key)

response = requests.get("

", headers=)

print(response.text)

正常請求結果

f8012ba778903e8dd1185173ed33b0b8|1550306560.9089868get: 獲取重要資料

駭客攻擊請求

hack請求

import

requests

md5_key_key = '

5e287e46a67ec778df70d27e7a5b8d6e|1550306579.3672032

'response = requests.get("

", headers=)

print(response.text)

hack請求結果

[第三關] 令牌已使用過

總結:

第一關:時間關  客戶端的時間和服務端的時間進行比較  10s內是正常訪問 超過10s則為超時訪問

[第一關] 訪問時間超時!')

第二關:規則關 防止修改時間 服務端把服務期設定的key和客戶端發來的時間進行md5加密 然後再和客戶端發來的動態令牌進行比較是否一致

第三關:過期令牌刪除

1、判斷客戶端的令牌是否在api記錄裡

2、如果在表示已使用不再被使用

3、如果不在將令牌作為key 客戶端時間+10作為value放在api記錄裡

4、這樣每次在判斷令牌是否在記錄表中的時候,先遍歷記錄表進行比較

比較當前的服務時間是否大於客戶端+10s的時間key,如果大於則已過期直接刪除,否則不做處理

5、當然如果用redis的話,這部操作不用關心,redis key 5s key後面指定時間redis會自動刪除

token 令牌 驗證

其實各個框架的token 令牌驗證原理一樣,分成生成跟驗證兩個步驟,步驟如下。步驟 1 載入jsp頁面的時候非同步獲取token id放到表單的隱藏域,生成token id 的同時也把token id放到session 中。這是生成 2 表單提交的時候在後台驗證表單token id 跟session...

Dubbo令牌驗證

作用 1.防止消費者繞過 註冊中心訪問提供者 2.在註冊中心控制許可權,以決定要不要下發令牌給消費者。3.註冊中心可靈活改變授權方式,而不需要修改或公升級提供者。可全域性設定開啟令牌驗證 token true uuid生成隨機令牌 token 123456 固定token令牌,相當於密碼。也可以在伺...

驗證 表單令牌

驗證規則支援對表單的令牌驗證,首先需要在你的表單裡面增加下面隱藏域 type hidden name token value 或者 然後在你的驗證規則中,新增 token 驗證規則即可,例如,如果使用的是驗證器的話,可以改為 protected rule name require max 25 to...