2017-01-01 112 views
2

我開發了一個應用程序,包括一個web後端,提供通過電子郵件和密碼或通過令牌登錄的方法。當通過電子郵件登錄時,服務器將在用戶記錄中存儲一個令牌,該令牌在30天后纔會出現。這個令牌隨後可以用於自動登錄,而無需每次都輸入電子郵件和密碼。至少30天。登錄令牌應該過期嗎?

現在我的問題:是否真的有必要令牌過期?如果是這樣,爲什麼?

再見

回答

5

可用性,答案是「不,應該不會過期」, 安全,答案是「是的,這絕對應該過期」

爲什麼:弱認證和會話管理是2號在OWASP前十(1)。防止會話劫持和其他基於會話的攻擊的常見最佳做法是會話到期。這樣,被盜,預測或強迫令牌的影響就會降低。它也縮短了時間,攻擊者必須「打破」令牌。 (2

+0

我不同意安全的答案。我認爲防止會話劫持的最佳做法是HTTPS。如果您不能使用HTTPS(爲什麼?),則應使用通過安全通道共享的PK密鑰對或共享密鑰對密碼進行加密簽名。任何一種方法都可以防止會話劫持(除了後一種情況下的精確重播攻擊)而無需令牌到期,因爲令牌不會首先通過線路發送,因此實際上不會受到影響(除非端點受到攻擊,但那麼你就沒有真正的安全性,而且都是沒有意義的)。 – dgatwood

+0

即使您使用的是HTTPS,您仍然應該在_some point_處將令牌過期,因爲您希望最小化受損客戶端端點的影響。任何有權訪問該設備的人都可以進行身份​​驗證,而且這種情況發生的頻率可能比您想象的要高,尤其是在使用筆記本電腦,平板電腦和手機時,因爲這些設備更容易被盜用。 – Optimae

1

這取決於您的應用程序的安全要求。記住有人登錄到應用程序後,其他人可以前來登錄並使用爲原始用戶創建的令牌登錄。