2

我目前正在对 WSSE 协议进行一些研究以保护我的 api。

我已经了解了基础,并且在我的脑海中很清楚。

但是我面临一个问题。

假设我想生成一个一次性摘要,我必须连接时间戳、随机数和密码。

但是,在服务器端,我没有存储在数据库中的明文密码,所以我无法检查摘要。

切换到清除密码不是一种选择。

我不能向客户端提供用于散列密码的算法,因为他们使用盐,而盐对客户端不可用。

我能想到的唯一解决方案是不对摘要进行散列,只需将数据和base64连接起来。

这样我就可以对用户密码进行编码以检查其有效性。

由于密码以纯文本形式传输,它可能不安全,但如果我强制 HTTPS 进行身份验证怎么办?

会安全吗?

4

1 回答 1

1

由于密码以纯文本形式传输,它可能不安全,但如果我强制 HTTPS 进行身份验证怎么办?

会安全吗?

是的,并且在正常范围内,这是确保其安全的唯一方法。

只需发送完整密码,但要通过安全可靠的TLS 连接发送。您可以使用安全密钥派生功能,例如 brypt 或 PBKDF2,并输入存储的随机盐(每个用户一个)和密码来检索“哈希”,然后可以检查存储在数据库中的哈希。

请注意,您不需要从客户端发送时间戳。当然,记录和限制身份验证尝试的次数是个好主意。您不能使用时间戳作为哈希的输入,每次时间戳更改时结果都会不同。

于 2012-09-25T21:45:36.640 回答