【问题标题】:How to prevent session hijacking in CodeIgniter 3如何防止 CodeIgniter 3 中的会话劫持
【发布时间】:2017-06-15 20:04:11
【问题描述】:

我知道这是一个重复的问题Codeigniter/PHP sessions security question,但很抱歉告诉我在我的案例中推荐的所有措施都失败了,这就是为什么我重复这个问题以及 2011 年提出的那个问题,现在它的答案已经过时了。所以请不要复制它。

在我的场景中,我启用了 $config['sess_driver'] = 'database';$config['sess_match_ip'] = TRUE; 在配置文件中。

我还将 csrf 令牌和 XSS 过滤放在我的身份验证表单中,并始终使用活动记录来防止任何类型的 SQL 注入。为了额外的安全性,我还在第 10 次尝试实施了 2 因素身份验证、Google ReCaptcha 和 ip 阻止。尽管如此,在我的情况下,上述所有措施只能防止暴力攻击,而不能防止会话劫持。

如果攻击者获得了 ci_session 值和我的 ip,他可以轻松登录我的网站,而无需任何登录凭据。

我知道使用 HTTPS 会有所帮助,因为我可以启用 $config['cookie_secure']=TRUE;,但我不确定是否 100%

我还尝试了我的 laravel 应用程序,它的默认中间件身份验证系统可以被会话劫持。

所以基本问题是我在会话上的所有身份验证工作,我不知道任何其他方法可以在不使用会话的情况下使用身份验证。

如果有人知道如何提高我的网络应用程序的安全性,请帮助我。

提前致谢。

【问题讨论】:

  • 你真的试过了吗? “如果攻击者获得了 ci_session 值和我的 ip,他可以轻松登录我的网站,而无需任何登录凭据”
  • @blacmoon 是的,先生。但在我的情况下,我手动复制笔记本电脑中的 ci_session cookie 值并将其粘贴到桌面的 ci_session cookie 中以绕过登录。两个系统的公共 ip 相同,因此 ip 阻止不起作用。因此,如果某些恶意软件获取 ci_session cookie 和系统 IP 地址,我的应用程序可能会被破坏。
  • 在会话保存中尝试数据库选项。可能会有所帮助。

标签: php codeigniter security session authentication


【解决方案1】:

您可以将访问者信息保存在会话中,作为操作系统平台和浏览器,并在每次页面加载时进行比较。

CI 有一个用户代理库可以帮助解决这个问题。

还创建一个 cookie,在每次页面加载时更改值,并在每次页面加载时将旧值保存在会话中。比较每个请求。比较所有内容,包括旧会话 ID 和与此 cookie 一起使用的旧自定义密钥。

CI 有一个 Cookie Helper 可以帮助解决这个问题。

在短时间内重新生成您的会话 ID。

如果任何比较数据不正确,您可以注销用户。销毁会话并删除 cookie。如有必要,请显示有关此问题的一些警报。

这将防止有人从您的网络中窃取您的会话 ID。并谨慎对待社会工程。

我正在搜索同样的问题。

【讨论】:

    【解决方案2】:

    防止会话固定意味着防止会话ID被盗。

    只有如果有办法被盗,你就失败了。担心之后会发生什么是没有意义的。

    如果攻击者获得了 ci_session 值和我的 ip,他无需任何登录凭据即可轻松登录我的网站。

    没有人可以将他们的 IP 地址更改为您的...

    【讨论】:

    • 如果攻击者连接到我的家庭互联网,他将获得相同的公共 IP。现在,如果以某种方式从我的笔记本电脑上窃取了会话 cookie,他只需将其复制并粘贴到他的笔记本电脑上即可访问我的软件。以上是我测试的一个场景,即使我启用 $config['sess_match_ip'] = TRUE; .
    猜你喜欢
    • 2012-08-27
    • 2017-12-22
    • 2010-11-28
    • 2012-05-19
    • 2017-05-27
    • 2012-02-20
    • 2012-09-22
    • 1970-01-01
    相关资源
    最近更新 更多