相关疑难解决方法(0)

防止会话劫持

如何防止多个客户端使用相同的会话ID?我问这个是因为我想添加额外的安全层来防止我网站上的会话劫持.如果黑客以某种方式计算出另一个用户的会话ID并使用该SID发出请求,我如何检测到服务器上有不同的客户端共享一个SID然后拒绝劫持尝试?

编辑

我仔细考虑后接受了Gumbo的回答,因为我已经意识到由于无状态HTTP协议的限制,我所要求的是不可能的.我忘记了什么可能是HTTP的最基本原则,现在我认为这个问题似乎有点微不足道.

让我详细说明我的意思:

在用户A登录example.com后,他会获得一些随机会话ID,为简单起见,让它为'abc123'.此会话ID在客户端存储为cookie,并通过服务器端会话进行验证,以确保登录的用户在从一个网页移动到另一个网页时仍然登录.如果HTTP不是无状态的,那么当然不需要存在这个cookie.因此,如果用户B窃取用户A的SID,并在其计算机上创建一个值为'abc123'的cookie,他就会成功劫持用户A的会话,但服务器根本无法合法地识别用户B的请求与用户A的请求有任何不同,因此服务器没有理由拒绝任何请求.即使我们要列出已经在服务器上处于活动状态的会话并尝试查看是否有人正在访问已经处于活动状态的会话,我们如何确定它是另一个非法访问会话的用户而不是同一个用户谁已经使用会话ID登录,但只是尝试用它发出另一个请求(即导航到不同的网页).我们做不到.检查用户代理?可以欺骗 - 尽管如此,作为深度防御措施还是很好的.IP地址?可以出于正当理由进行更改 - 但是我没有根本不检查IP地址,我建议检查IP的前两个八位字节,甚至是数据计划网络上的用户,因为完全合法的原因,他们经常拥有不断变化的IP通常只有IP更改的最后两个八位字节.

总而言之,正是无状态HTTP谴责我们永远无法完全保护我们的网站免受会话劫持,但良好的做法(如Gumbo提供的那些)将足以防止大多数会话攻击.因此,试图通过拒绝同一SID的多个请求来保护会话免受劫持是荒谬的,并且会破坏会话的整个目的.

php security session

63
推荐指数
2
解决办法
3万
查看次数

标签 统计

php ×1

security ×1

session ×1