在后端和另一个服务之间保留用户登录的安全方法



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

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

假设我不能在web服务端更改任何内容,并且web服务需要哈希/盐水登录凭据作为输入参数(以及API端点、HTTP主体等),那么我可以在客户端采取哪些安全措施来确保用户提供的用户名/密码的安全。

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

主要问题是"你想要什么样的保护"。您的用户已经知道他们的用户名和密码,所以您可以考虑将他们保存在客户端是最安全的(至少,您不需要保护这些凭据不受用户的攻击)。盐水+哈希密码可以用作web服务的凭据,因此它们与用户名/密码具有相同的值。您的用户已经将其密码发送到您的服务器,因此,它已经信任您的服务器。

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

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

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

这里真正的问题是什么

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

相关内容

  • 没有找到相关文章

最新更新