我知道这是一个重复的问题Codeigniter/PHP sessions security question,但很抱歉告诉我推荐的所有措施都失败了,这就是为什么我要重复这个问题并在2011年问到这个问题,现在答案是过时。所以请不要复制它。
在我的场景中我启用了
配置文件中有$config['sess_driver'] = 'database';
和$config['sess_match_ip'] = TRUE;
。
我还在我的身份验证表单中放入了csrf令牌和XSS过滤,并始终使用活动记录来阻止任何类型的SQL注入。为了更加安全,我还在第10次尝试时实施了双因素身份验证,Google ReCaptcha和ip阻止。尽管如此,上述所有措施都只能防止暴力攻击,而不是会话劫持。
如果攻击者获得了ci_session值并且我的ip可以轻松登录我的网站而无需任何登录凭据。
我知道使用HTTPS可以提供帮助,因为我可以启用$config['cookie_secure']=TRUE;
,但我不是百分之百确定它,因为我可以轻松登录我的Twitter帐户我做会话劫持和Twitter使用HTTPS。
我也试过了我的laravel应用程序,它的默认中间件身份验证系统可以被会话劫持。
所以基本问题是我在会话中的所有身份验证工作,并且我不知道任何其他方法在不使用会话的情况下使用身份验证。
如果有人知道如何提高我的网络应用程序的安全性,请帮助我。
提前致谢。
答案 0 :(得分:1)
防止会话固定意味着防止会话ID被盗。
您只有才会失败,如果有办法让它被盗。担心之后发生的事情毫无意义。
如果攻击者获得了ci_session值并且我的ip可以轻松登录我的网站而无需任何登录凭据。
没人能改变你的IP地址......
答案 1 :(得分:1)
您可以在会话中保存访问者信息,如OS平台和浏览器,并在每次加载页面时对其进行比较。
CI有一个用户代理库可以帮助解决这个问题。
还创建一个cookie,在每次加载页面时更改值,并在每次加载页面时将旧值保存在会话中。比较每个请求。比较所有内容,包括旧会话ID和与此cookie一起使用的旧自定义密钥。
CI有一个帮助这个的Cookie助手。
在短时间内重新生成您的会话ID。
如果任何比较数据不正确,您可以注销该用户。销毁会话并删除cookie。如有必要,请显示有关此问题的警报。
这可以防止有人从您的网络中获取您的会话ID。社会工程师要谨慎。
我正在搜索同样的问题。