[英]Stateless Token Auth security
我是ReST的新手,正在實現ReSTful令牌認證,試圖以標准方式在移動Web應用程序中使用Django-Rest-Framework JWT
我決定讓移動應用檢查過期日期,因為我讀到的是ReSTFul,並且服務器檢查它是否要求它存儲不是ReSTful的令牌
關於上述實現,我有一些安全問題:
1)無論刷新多少次令牌,獲取一個令牌都不能使攻擊者完全訪問用戶的登錄信息嗎?
即使通過https,也可以說是某種方式被攻擊者檢索到的令牌,即ssl攔截器代理。顯然,移動應用程序不允許他們登錄,但他們可以通過任何方式調用帶有令牌的api來獲取數據HTTP客戶端。
2)如果服務器認為所有令牌都有效,那么首先具有刷新令牌的目的是什么?
似乎沒有前向安全性,但是,如果服務器存儲了令牌並保留了它們的到期日期,則將停止對用戶的完全損害,但不會阻止每個會話的損害。 顯然,使用SSL攔截器,它們仍然可以危害用戶,但需要捕獲每次登錄。 但是,該實現並不可靠。
首先,過期的令牌是有效的令牌,但是您可以在執行任何操作之前檢查令牌是否過期,並拒絕過期的令牌。 您可以采取幾種措施來提高應用程序的安全性:
您可以在令牌中添加哈希密碼。 因此,如果用戶丟失了手機,則在另一台設備上更改密碼后,您可以拒絕帶有舊密碼哈希的令牌。
這並不完全令人不安,但也沒有那么糟糕:您可以在db中添加一個名為revokedTokens的表,該表可以跟蹤被撤銷的令牌ID(顯然應該將其添加到令牌)中的用戶,如果以后您收到使用該令牌的請求開啟,您可以拒絕它,直到它過期。 當它過期時,您可以從表中刪除它,因為過期的令牌將不再是問題。
您可以在用戶登錄令牌時添加設備的主機名,並將其與請求的主機名進行比較,從而為ssl攔截器攻擊提供額外的安全性。 是的,這不是全面保護,但仍要好一些,因為攻擊者除了需要從其他設備發送令牌之外,還需要更改其主機名。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.