2016-11-22 51 views
1

我一直在努力解决这个问题的过去一个月。会话ID验证 - 安全 - 离子/角

当用户登录时,会在数据库中创建会话令牌并存储在localStorage中。这使我可以在每次关键服务器调用时验证用户(通过嘲讽sessionID到服务器并将其值与DB上存储的值进行比较),但是如果我从任何用户的localStorage中复制特定会话ID我可以粘贴到我的localStorage并验证。这是我需要填补的一个非常大的差距。验证sessionID并避免某人复制并粘贴它的正确方法是什么?如何让localStorage编码给用户?

注:的SessionID使用JWT创建, 会话令牌是完全随机的,创建登录后, 值被存储在用户的列的列,并保存在localStorage的

回答

3

有没有什么你可以做到完全防止这样的事情。如果攻击者能够物理访问某台计算机以便能够从本地存储中进行复制和粘贴,则无法阻止它们。

有几件事你可以稍微缓解它,但它们比其他任何东西都更适合于窗户,而且它们通常会导致比解决问题更多的问题。其中之一是将会话固定到IP地址。如果会话从一个地址开始,然后移动到另一个地址,则可以使会话无效并强制用户重新进行身份验证。但是,随着他们的机器跨越网络,这会导致合法用户出现很多问题。移动设备加剧了这种情况,但即使是固定式设备也难以保持稳定的IP地址。

+0

感谢您分享您的意见。我同意ip地址固定听起来有问题。 –

+2

+1为一个好的,明智的答案。一些可能会增加一些价值的增强功能是定期更改令牌(比如每隔10分钟)以减少复制令牌的机会窗口(以及日志重放尝试),并确保提供明确的注销功能,将本地存储中的副本撕碎。 – symcbean

+0

非常好的建议symcbean。谢谢。 –