我已經實現在一個項目我工作的安全系統,如下所示(請告訴我,如果事情是在圖中不清楚,其簡單雖然)處置未使用的安全令牌的最佳方法?
這是工作完全一樣應該,但如果有人提出請求的,並且一旦令牌已在客戶端收到中止它,然後激活令牌仍然會在數據庫中,可以被黑客惡意利用。
雖然我刪除數據庫中verifyToken步驟令牌,但如果令牌還沒有達到它,它仍然是可用的。如果請求在令牌發佈後被中止,那麼你們認爲將會丟棄令牌的方法是什麼?
而且,即使客戶端獲得訪問令牌後,他只能讓一個請求令牌標記無效之前。但是,即使一個請求可能是非常危險的。
UPDATE:我的令牌機制如下:
發送令牌:
1)生成2級隨機的令牌:TOKEN1和token2。
2)生成這樣的哈希:TOKEN1 +用戶ID + SALT
3)存放在DATABSE的所有數據。
4)發送TOKEN1,token2,和新的散列(ⅰ稱之爲id_hash)
驗證令牌:
1)接收TOKEN1和token2。
2)如果token2不從數據庫匹配,返回FALSE。
3)從會話獲取用戶ID。
4)哈希它按以下順序:TOKEN1(收到)+用戶ID(會話)+ SALT
5)驗證新驗證的散列與所接收的id_hash。
6)如果匹配,返回true,否則返回FALSE。
這樣,用戶只能訪問/更改與其用戶ID相關的數據,而不能訪問其他用戶的ID。 你們覺得這足夠嗎?或者這種方法有缺陷嗎?
我在apache2 webserver上使用PHP和MySQL。
唯一標記可以請求多少次? – fortune
@fortune考慮到令牌在verifyToken步驟中被刪除,我會說他們只能使用一次。 –
順便說一下,處置 - 不處理 – CreativeMind