1

设想:

Web 服务生产者只有密码的 SHA-1 哈希值存储在数据库中。我们需要使用用户名/密码组合来验证 Web 服务用户。


Web 服务安全用户名令牌配置文件允许我们为此添加soap 标头:

WSS: SOAP Message Security 文档中引入了该元素,作为提供用户名的一种方式。

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

PasswordText 密码类型意味着密码以纯文本形式通过网络发送,如果我们不使用传输级安全机制,这是一个安全问题。PasswordDigest 避免发送纯文本密码并发送哈希。但是为了避免重放攻击(即攻击者使用窃听来捕获散列密码并通过另一个请求重新发送),PasswordDigest 在计算散列之前为密码添加时间戳和随机数。此添加导致以下限制:

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


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

4

1 回答 1

2

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

  • 询问用户密码
  • 将其转换为 SHA-1
  • 通过 PasswordDigest 运行它
  • 服务器将对数据库中的 SHA-1 执行相同的操作
  • 服务器会发现它们匹配并允许访问
于 2010-06-24T10:53:07.147 回答