用于在后端和其他服务之间保留用户登录的安全方法

时间:2014-09-15 20:07:04

标签: java web-services security rest key-management

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

如果您想确保您的应用程序保持无状态,那么将此哈希存储在客户端本身(在cookie中)并不是一个坏主意。我们可能会争辩说这会降低安全性,因为它也会打开哈希到客户端攻击。

这里真正的问题是什么?

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

相关问题