我開發了一個應用程序,包括一個web後端,提供通過電子郵件和密碼或通過令牌登錄的方法。當通過電子郵件登錄時,服務器將在用戶記錄中存儲一個令牌,該令牌在30天后纔會出現。這個令牌隨後可以用於自動登錄,而無需每次都輸入電子郵件和密碼。至少30天。登錄令牌應該過期嗎?
現在我的問題:是否真的有必要令牌過期?如果是這樣,爲什麼?
再見
我開發了一個應用程序,包括一個web後端,提供通過電子郵件和密碼或通過令牌登錄的方法。當通過電子郵件登錄時,服務器將在用戶記錄中存儲一個令牌,該令牌在30天后纔會出現。這個令牌隨後可以用於自動登錄,而無需每次都輸入電子郵件和密碼。至少30天。登錄令牌應該過期嗎?
現在我的問題:是否真的有必要令牌過期?如果是這樣,爲什麼?
再見
這取決於您的應用程序的安全要求。記住有人登錄到應用程序後,其他人可以前來登錄並使用爲原始用戶創建的令牌登錄。
我不同意安全的答案。我認爲防止會話劫持的最佳做法是HTTPS。如果您不能使用HTTPS(爲什麼?),則應使用通過安全通道共享的PK密鑰對或共享密鑰對密碼進行加密簽名。任何一種方法都可以防止會話劫持(除了後一種情況下的精確重播攻擊)而無需令牌到期,因爲令牌不會首先通過線路發送,因此實際上不會受到影響(除非端點受到攻擊,但那麼你就沒有真正的安全性,而且都是沒有意義的)。 – dgatwood
即使您使用的是HTTPS,您仍然應該在_some point_處將令牌過期,因爲您希望最小化受損客戶端端點的影響。任何有權訪問該設備的人都可以進行身份驗證,而且這種情況發生的頻率可能比您想象的要高,尤其是在使用筆記本電腦,平板電腦和手機時,因爲這些設備更容易被盜用。 – Optimae