0

身份验证和会话跟踪的常见做法包括使用从客户端检索到的会话 ID,然后比较存储在数据库中的用户详细信息以匹配会话 ID、用户代理详细信息、IP 等。现在,如果黑客获得对会话的访问权限令牌并猜测或提取其他细节,他可以冒充用户吗?我们可以采取哪些措施来防止此类攻击?

4

1 回答 1

1

对于大多数应用程序,获取会话令牌就足够了,通常不会进行进一步的检查。唯一会产生非常显着差异的是使用会话令牌检查请求源 IP,这实际上会提高安全性,但从可用性的角度来看,这是一场灾难——典型用户的 IP 地址有时会发生变化,很多用户也可能具有相同的外部 IP(例如在某些 ISP 或公司网络中)。

所以是的,获取会话令牌允许攻击者冒充用户。

为了防止此类攻击,需要使用安全的随机生成器生成会话 ID(或者更好的是,从真实随机源生成,但这会在规模上产生问题),并且需要在传输 (https) 和存储时保护它们( httpOnly cookie)。当然,有时其他方面也同样重要,因此可以做出不同的妥协(比如将令牌存储在 localStorage 中,但只是一个短暂的,并将刷新令牌存储在身份提供者的 httpOnly cookie 中)。

最重要的是,您几乎不应该自己实现它,除非您有真正的特殊要求(以前可能几乎没有人想要的东西)。在所有其他情况下,您会发现它已经在您的技术堆栈中实现了很多人测试的知名库或框架 - 您应该使用它们。

于 2020-01-18T17:39:04.260 回答