当没有存储清晰的文本密码在网络服务生产商上时,什么是密码数量的替代方法?

StackOverflow https://stackoverflow.com/questions/3109232

设想:

Web服务生产商仅具有存储在数据库中的SHA-1哈希。我们需要使用用户名/密码组合对Web服务用户进行身份验证。


Web Services Security Usernametoken配置文件 允许我们为此目的添加SOAP标头:

该元素是在WSS:SOAP消息安全文档中引入的,作为提供用户名的一种方式。

在元素中,可以指定元素。类型passwordText和passwordDigest的密码不仅限于实际密码,尽管这是一种常见的情况。 (146-151)

密码文本密码类型意味着密码是通过电线作为纯文本发送的,如果我们不使用运输级别的安全机制,这是一个安全问题。 passwordDigest避免发送纯文本密码并发送哈希。但是,为了避免重播攻击(即使用窃听器捕获哈希密码并使用另一个请求进行重新启动的攻击者)PasswordDigest在计算哈希之前将时间戳和随机数添加到密码中。此添加导致以下限制:

请注意,只有在请求者和收件人都可以使用纯文本密码(或密码等效)时,才能使用密码限制。 (196-197)


但是就我们而言,我们没有纯文本密码。我的问题是:我们还有什么替代方案可以在服务器上提供纯文本密码?

有帮助吗?

解决方案

SHA-1可以完美用作“明文”密码。

  • 向用户询问密码
  • 将其转换为SHA-1
  • 通过密码限制的东西运行它
  • 服务器将对数据库中的SHA-1进行相同的操作
  • 服务器会发现它们匹配并允许访问
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top