我目前正在对WSSE协议进行一些研究,以保护我的api。
我已经理解了它的基础,这一点在我的脑海中是清晰的。
然而,我面对一个问题。
比方说,我想生成一个一次性的摘要,我必须连接时间戳,随机数和密码。
但是,在服务器端,我没有存储在数据库中的明文密码,所以我无法检查摘要。
切换到清除密码不是一个选项。
我也不能向客户端提供用于散列密码的算法,因为他们使用salt,而salt对客户端不可用。
我能想到的唯一解决方案就是不要对摘要进行哈希处理,只需将数据连接起来并对其进行base64。
这样,我就可以对用户密码进行编码,以检查其有效性。
由于密码是以纯文本传输的,所以它可能不安全,但如果我强制HTTPS进行身份验证怎么办?
安全吗?
发布于 2012-09-26 05:45:37
当密码以纯文本传输时,
可能不安全,但如果我强制HTTPS进行身份验证怎么办?
安全吗?
是的,在正常范围内,这是确保安全的唯一方法。
只需发送完整的密码,但通过安全的TLS连接发送。您可以使用诸如brypt或PBKDF2之类的安全密钥派生函数,并输入存储的随机盐(每个用户一个)和密码来检索“散列”,然后可以检查数据库中存储的散列。
请注意,您不需要从客户端发送时间戳。当然,记录并限制身份验证尝试的次数是一个好主意。您不能使用时间戳作为散列的输入,每次时间戳更改时,结果都会不同。
https://stackoverflow.com/questions/12588498
复制相似问题