2

这听起来很简单,但我找不到解决方案。我正在使用最新版本的 CI 来构建网站框架。我正在使用会话来存储访问信息,以允许用户访问某些页面。这在 firefox、chrome、safari 和 IE 9 及以下版本中运行良好。但是,在 IE10 中,当我在框架内更改页面时,会话会自动取消设置。例如,我在仪表板上单击链接将我带到 localhost/sitename/admin/settings,IE10 会破坏所有会话信息,因此我将注销并重定向到登录页面。我尝试将 sess_cookie_name 更改为 cisessions (我在其他答案中看到过)但这没有效果。

有没有其他人遇到过这个问题,或者知道一个可行的解决方案?

提前致谢。

编辑:

应该等着发布这个:)

更多挖掘后找到解决方案,

$config['sess_cookie_name']  = 'cisession';
$config['sess_match_useragent'] = FALSE;

那么新的问题是, sess_match_useragent 对于 CI 安全目的绝对重要,还是可以对所有浏览器保持关闭?

4

1 回答 1

0

这是一个很难客观和完整地回答的问题,因为有很多因素在起作用。

将用户代理作为会话验证的一部分包含在内是有用的,因为它降低了会话劫持的可能性。但是,考虑一下:

  1. 从安全角度来看,使用可以sess_match_ip匹配或超过有效性吗?sess_match_useragent通过匹配 IP,攻击者将被要求合法地使用相同的 IP,或者在访问您的服务器时尝试欺骗它。用户代理验证很容易被欺骗,IP 欺骗要困难得多,并且可能需要破坏用户的网络才能有效(例如,同一网络、本地网络或什至同一计算机上的另一个人)。

  2. 您是否使用 SSL 加密来安全地传输数据?如果不是,是否可以想象中间人攻击会使您的应用程序可被利用,而不管用户代理检查如何?由于客户端将在没有加密形式的情况下与服务器通信,因此可以提取、操纵和重放整个 HTTP 请求。如果启用 IP 检查,这将变得更加困难。

  3. 在处理安全问题时,您真的希望不同浏览器的服务器端行为不同吗?虽然现在看起来微不足道,但完全可以想象这种问题也可能会影响其他浏览器的未来版本(或在 IE 的未来版本中恢复,以“修复”它)。工程解决方案值得您花时间吗?

考虑到这一点,我个人的意见是对所有浏览器完全关闭它。Internet Explorer 仍然代表着浏览器市场的相当大份额,而且没有编写每个浏览器的修复程序,它似乎不值得实施。鉴于更基本的漏洞利用和 IP 匹配的可用性,安全优势相对较小,这一点尤其正确。

于 2013-01-25T19:46:47.313 回答