【问题标题】:PHP session spoofing/hijackingPHP会话欺骗/劫持
【发布时间】:2014-05-12 12:59:44
【问题描述】:

当有人登录我的网站时,他们显然会填写一张包含用户名和密码的表格。然后该表单检查数据库中是否存在该密码(当然是该密码的加密版本),然后以该人的用户 ID 作为会话 ID 启动会话。

这是否容易受到任何形式的欺骗/劫持/黑客攻击?有没有一种更安全的方法来进行会话,这样就不会有人错误地“登录到别人的帐户”?

        session_regenerate_id();

        $_SESSION['SESS_MEMBER_ID'] = $uid;
        $_SESSION['SESS_NAME'] = $email;

        session_write_close();

【问题讨论】:

  • @RakeshShetty - 我对我的代码特别感兴趣,因为其他人没有提供任何代码,我也不知道我的代码是否安全。

标签: php session


【解决方案1】:

您最好的选择是检查用户或其用户代理的 IP 地址。

当然,如果他们的 IP 地址发生变化,他们将不得不重新进行身份验证。例如,如果智能手机上的用户离开他们的 WiFi 范围并开始使用他们的蜂窝网络。我认为为可能一小部分用户带来的轻微不便带来的安全性是值得的。

【讨论】:

  • 动态IP呢?我个人没有,所以我不知道它们多久更换一次,但肯定足以令人讨厌吗?
  • @TedMosby 这取决于 ISP,我已经看到它们经常 24-48 小时更改,大多数持续时间更长。不确定这是否可行,我想取决于应用程序的建议。重新登录可能不是世界末日。
  • 顺便说一句,你建议我怎么做?我是否应该在您创建会话时添加您 IP 的新会话变量,然后在所有其他页面上交叉检查以确保它仍然是相同的 IP?我想这是有道理的,如果有人知道 IP 是否可以比这更频繁地更改,我只想提供一些意见。
  • 是的,登录时,添加用户的 IP 地址,然后在每个页面上检查类似 if (isset($_SESSION['ip']) && strcmp($_SESSION['ip'] , $_SERVER['REMOTE_ADDR']) !== 0) die('zomg haxxors');
  • @RyanKempt 通常是个好主意,但如果此人故意试图入侵该站点,更改您的 IP 就像在路由器配置中对 MAC 地址进行小编辑一样简单,然后路由器重置。
猜你喜欢
  • 2013-06-29
  • 2011-09-22
  • 1970-01-01
  • 2011-12-09
  • 2011-07-02
  • 2013-01-17
  • 2019-06-05
  • 2012-02-20
  • 2013-10-09
相关资源
最近更新 更多