【问题标题】:PHP sessions unsafe? Need another methodPHP 会话不安全?需要另一种方法
【发布时间】:2016-02-21 15:42:41
【问题描述】:

所以有人告诉我这种方法不安全,因为人们可以伪造会话并使用它的变量。
这是我脚本的一小部分:

<div class="panel-body text-center">
    <?php
        if(!isset($_SESSION['steamid'])) {
            steamlogin(); //login button
        }
        else
        {
            include ('steamauth/userInfo.php');
            include ('db.php');
            $mysqli = mysqli_query($db,"UPDATE `users_steam` SET name='".$steamprofile['personaname']."', avatar='".$steamprofile['avatarfull']."' lastseen='".time()."' WHERE steamid='".$_SESSION["steamid"]."'");

            echo "<img class='img-responsive center-block rounded' src='".$steamprofile['avatarmedium']."' title='' alt='' /></img><br>"; // Display their avatar!
            echo "<span>".$steamprofile['personaname']."</span>";
            logoutbutton();
        }
    ?>
</div>

如果用户未登录,则会显示登录按钮。如果相反,则显示他的头像和姓名,并更新我的数据库。
$_SESSION['steamid'] 变量包含用户 STEAM ID,用户通过 Steam 登录时会检索到该 ID。除了 $_SESSION 变量之外,还有其他方法可以包含此 ID 并在我的网站中进一步使用它吗?
谢谢

【问题讨论】:

  • So I've been told that this method is not secure - 请引用 - 我的银行使用会话,所以如果他们如此不安全,我想知道是否向他们投诉.....但我希望有证据支持如果我这样做了就索赔
  • 我听说过 session_regenerate() 会为 session 提供一个新的 ID,但我不知道这是否是我问题的答案。
  • 是的,您可以更改引用服务器上某些数据的会话 id,但您需要知道 php 设置的 cookie 的确切值。但是你不能改变'$_SESSION[]'的值
  • 顺便说一句,没有其他好的方法可以为特定的客户端服务器端存储数据,所以使用会话

标签: php session steam


【解决方案1】:

您确实可以窃取会话,但您必须了解,要做到这一点,您首先必须从客户端窃取包含会话 ID 的 cookie,这非常困难。

无论如何,让它更安全的一些事情是:

  • 使用 SSL,它会加密包括会话 cookie 在内的所有内容,从而无法通过流量监控窃取数据。
  • 验证会话 cookie 时使用多个条件,而不仅仅是 ID。检查IP地址,浏览器,你能想到的任何东西
  • 在 cookie 上设置一个激进的过期时间,如果上述条件之一不匹配,则立即使其失效。
  • 每次用户访问您的页面时,创建一个新会话并在销毁之前从旧会话传输数据。确保生成不同的会话 ID 并将其存储在 cookie 中。

在 Web 开发方面没有绝对的安全性。您必须接受这样一个事实,即无论您做什么,都可能冒充受感染或受监控的用户。我们目前拥有的唯一真正安全的东西是 SMS 令牌,这在较小的网站上可能会带来不便。你能做的最多就是让它变得尽可能难。

【讨论】:

    【解决方案2】:

    为确保您的页面是安全的,您应该存储一个会话 像这样的变量:

    if( $_SESSION['logged_in'] )
    {
         // your Code
    }
    

    这意味着只有登录的用户才能看到。

    现在对于伪造会话变量,这是不可能的。最重要的是,会话变量不存储在客户端的计算机上,它们只存储在服务器上。客户端机器获得的只是 sessionID,通常存储在 cookie 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多