【发布时间】: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