我面临的问题可能是无法解决的,具体如下:
我有一个客户端,它是一个由7-8个不同位置的1,500+用户组成的大型组织。该应用程序是构建在Kohanav3.0框架上的PHP应用程序。组织位于ISP级别的代理过滤服务器后面。每个位置都有一个主要的公共IP地址,通过代理传输到web。每个用户都有雇主颁发的Mac或Windows工作站。
他们正在经历的似乎是曲奇碰撞。示例:一个用户在他们的工作站登录,另一个用户使用相同的操作系统和浏览器类型从相同的位置、不同的工作站登录。第二用户通过接收与第一用户匹配的新生成的cookie (令牌)来接收第一用户的活动会话。这似乎只与'authautologin‘cookie有关(在登录屏幕上进行“记住我”复选框时设置),但我将对来自代理的缓存保持开放的选项(我还不能证明代理正在缓存)。
由于网络设置,服务器会看到数百个用户使用同一个用户代理从同一个IP地址登录。我最初的想法是,Kohana 3生成浏览器(用户代理)特有的cookie的方法对于这个现实世界的应用程序来说还不够独特。
有人经历过这样的事情吗?在cookie和会话生成中应该采取哪些适当的操作?管理数据库中的cookie和活动会话会更好吗?
发布于 2011-12-19 18:14:48
这只是一个想法,但在PHP会话中(取决于您的Debian和PHP版本),它曾经是一个bug。我建议你试试:
发布于 2011-12-19 16:51:16
哇,这是一个令人讨厌的弱点,不错的接球!
到目前为止,在PHP下生成cookies的最好方法是让PHP这样做:session_start()。仅此而已!如果你正在产生自己的曲奇,那么你真的搞砸了什么地方。现在您可以使用$_SESSION[]超级全局。最佳实践是在访问应用程序中的session_start()之前在公共头文件中调用$_SESSION。
您可能还需要考虑其他问题,如owasp a9、csrf和cookie标志:HTTP_Only和“安全”标志(将cookie强制置于https之上)。
发布于 2011-12-27 21:30:07
我不确定我是否正确地理解了你,但是.我理解这个请求是这样的:
用户(工作站) ==>代理() ==> internet ==>公司网站(以及反向响应)。
检查代理是否设置"HTTP_X_FORWARDED_FOR“(在$_SERVER超全局变量中)。这可能是确定用户工作站IP地址的唯一方法。如果是的话,你就完了。
https://stackoverflow.com/questions/8562683
复制相似问题