0

我的 Java 应用程序服务器即将与 RESTful Web 服务集成,并将轮询它以获取内容 (JSON) 以显示给我的用户。

我的用户使用他们的用户名/密码登录,然后我必须对其进行哈希 + salt,然后在每次调用时转发到 Web 服务。Web 服务获取散列/加盐登录信息并对其进行身份验证(同样,每次调用)。

假设我无法在 Web 服务端更改任何内容,并且 Web 服务需要散列/盐渍登录凭据作为输入参数(以及 API 端点、HTTP 正文等),我可以采取哪些安全措施客户端以确保用户提供的用户名/密码安全。

我可能做的最糟糕的事情就是把它们留在记忆中。我还有哪些其他选择?

4

1 回答 1

1

主要问题是“你想要保护什么”。您的用户已经知道他们的用户名和密码,因此您可以认为将它们保留在客户端大部分是安全的(至少,您不需要保护这些凭据免受用户的侵害)。salted + hashed 密码可用作 Web 服务的凭据,因此它们与用户名/密码具有相同的值。您的用户已经将其密码发送到您的服务器,因此隐含地,它已经信任您的服务器。

结论:在这种情况下,将哈希直接保存在内存中是相当安全的。

为了限制风险,您可能不应该将此哈希存储在永久存储中(数据库、磁盘上的文件……)。

如果您想确保您的应用程序保持无状态,最好将此哈希存储在客户端本身(在 cookie 中)。我们可能会争辩说,这会在一定程度上降低安全性,因为它也会向客户端攻击开放散列。

这里真正的问题是什么?

真正的问题是客户端需要信任您的服务器,因此您需要承担确保保持信任的责任。这就是为什么像 OpenId 这样的解决方案很有趣:它们限制了对第三方的信任。

于 2014-09-15T20:16:14.580 回答