会话欺骗(PHP)

ver*_*nti 10 php session spoofing

我正在用PHP编写一个包含布尔值的网站$_SESSION['logged_in'].true当数据库中存在用户名和密码匹配时,将其设置为.

我对会话很陌生,只是想知道未注册(或者说,已注册)用户true是否有可能通过设置此布尔值来绕过登录过程,这可能与cookie一样.

我理解用户必须从客户端操作服务器端变量,但我的问题是这是多么容易,用户将如何完成这样的任务,是否有任何已知的漏洞,什么是避免这种攻击的最佳做法/预防措施?

Eug*_*eck 16

让我们从好消息开始:$_SESSION默认情况下,数组是完全不可见的,并且可由客户端操作:它存在于服务器上,仅存在于服务器上,在执行环境中,不对客户端开放.

现在回到原点:很容易让你的PHP代码"几乎正确",从而在服务器看到的客户端和会话之间打开一扇门.除此之外,窃取客户端会话(包括cookie)非常容易.

我推荐一些已被证明非常有效的缓解措施:

  • 不要存储"登录"值 - 而是存储"会话cookie"值,并将cookie设置为客户端.在客户端请求上做一些事情$loggedin=($_SESSION['cookie']==$_COOKIE['session']).这使得攻击者需要:cookie和会话ID.
  • 经常刷新会话cookie,在错误的cookie上杀死会话.如果黑帽窃取cookie和会话,真实用户的下一次点击将同时注销并创建可记录事件.
  • 如果您的请求来自JS,请考虑创建一个简单的身份验证功能:不是发送身份验证令牌,而是将其加密,使用时间戳加密,然后对其进行哈希处理.发送salt,timestamp和hash.让服务器检查时间戳.

  • 我喜欢盐胡椒粉 (3认同)