用户登录会话变量。是否可以欺骗会话变量? PHP

时间:2013-08-05 19:01:12

标签: php session login

当用户登录时,我使用以下策略对用户进行身份验证:

    数据库中包含
  1. 用户名密码以及唯一的令牌会话标识
  2. 如果以上返回true,则设置会话变量$_SESSION['logged_in'] = true
  3. 在每个页面(basecontroller)上检查if ($_SESSION['logged_in'] > 0),否则重定向到登录页面。
  4. 黑客是否有可能以某种方式设置 $ _ SESSION ['logged_in'] = true; ?上述策略是否存在安全问题?

    请给我一篇文章或任何可以帮助我提高安全性的文章。

3 个答案:

答案 0 :(得分:6)

会话存储在服务器上,因此用户无法修改会话中的任何内容,除非他闯入您的服务器 - 在这种情况下,他显然可以运行$_SESSION['logged_in'] = true;或执行任何其他规避任何安全措施在你的代码中有。

客户端唯一存储的是会话ID cookie。这是一个随机的32个字符的哈希,不包含任何数据。

答案 1 :(得分:0)

在PHP中使用会话时,访问者浏览器会存储一个cookie,其中只存储会话ID。此会话ID在后续请求时传递回您的服务器,当您发出session_start()时,服务器通常会打开一个文件,其中包含该唯一会话ID的名称。这是存储数据的地方。

默认会话ID非常长,因此攻击者需要很长时间来暴力破解并猜测其他人当前经过身份验证的会话。如有必要,可以调整cookie长度。

只要您的会话在合适的时间范围内到期,并且服务器正确删除过期的会话数据,您就不会有任何问题。

答案 2 :(得分:0)

“黑客”无法设置会话变量,除非您的代码中存在一些安全问题(没有代码 - >没有可以告诉,抱歉)

但我发现提供的代码存在问题。请在步骤3中使用isset而不是> 0.严格的错误设置会在此处给出警告。请仅使用严格的错误设置(更好的代码,行为可预测)和实时网站的“正常”设置进行开发。

如果您确实存在安全问题,请向专业的PHP程序员付费以检查您的代码或在此处发布。