1

我正在使用带有 Token Authenticatable 模块的设计。如果我查看存储在数据库中的数据,我会发现即使密码已加密,访问令牌也未加密。

这不是一个主要的安全问题吗,因为如果黑客掌握了数据库信息,他们将拥有原始的、功能齐全的访问令牌,类似于存储未散列的密码?

4

1 回答 1

0

安全性和便利性通常是相反的。它不太安全,但有一些方法可以缓解这种情况(当然会降低便利性)。您可以经常使令牌过期(使用expire_auth_token_on_timeout或定期重置所有令牌。

如果您的数据库受到损害,您将遇到更大的问题!密码通常由用户在服务之间共享,因此到目前为止,泄露的密码比泄露的 auth_token 更糟糕。

为什么它们不加密?

密码存储在用户的脑海中,生成 auth_tokens,它们必须存储在某个地方(客户端),以便提交并与加密的 auth_token 进行比较。每次用户使用其“正常”凭据登录时,都必须生成一个新令牌。

性能也可能是一个问题。BCrypt 很慢,对每个请求进行这种比较可能会出现问题。


我在文档中或其中一位开发人员中找不到“官方”答案,因此提供的答案是基于我的经验和意见。

于 2013-03-17T16:45:07.993 回答