1. 獲取介面資訊
client端
importrequests
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)
(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請求
importrequests
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)
(md5_key_key)
response = requests.get("
", headers=)
print(response.text)
正常請求結果
f8012ba778903e8dd1185173ed33b0b8|1550306560.9089868get: 獲取重要資料
駭客攻擊請求
hack請求
importrequests
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...