【问题标题】:creating secure php session cookies创建安全的 php 会话 cookie
【发布时间】:2011-12-03 08:55:23
【问题描述】:

我正在尝试获取存储 php 会话 ID 的 php 会话 cookie,以确保安全(https)和 http。

$name = session_name();
setcookie($name, $_COOKIE[$name], 0, '/', 'domain.com, 1, 1);

我在会话开始之前调用了上面的代码。问题是它创建了两个cookie。一种我想要的安全方式,然后它会创建一个没有 ssl 或仅 http 的常规 cookie。两个 cookie 具有相同的值。

有没有办法告诉 php 创建安全 (ssl) 和 http-only 会话 cookie?

另外,不要提出另一个问题。由于我们在同一个主题上......用户可以修改$_SESSION 变量吗?我知道他们可以自行操作会话 ID,但想知道 $_SESSION 是否可以安全地存储最终用户无法随意修改的用户 ID。

【问题讨论】:

    标签: php session cookies


    【解决方案1】:

    PHP 在您拨打session_start() 的那一刻为您创建cookie,这就是原因。

    您可以使用session_set_cookie_params 函数或在您的php.ini 中配置该cookie。

    session_set_cookie_params($lifetime = 0, $path = '/', $domain, $secure = true, $httponly = true);
    

    只需配置并删除您自己的setcookie 调用,这是多余的。

    用户可以修改$_SESSION 变量吗?

    不,他们只能编辑 cookie 中的数据。这通常会导致会话丢失(如果幸运的话,可以得到其他人的会话)。

    这就是为什么如果用户想要更改她/他的密码,您需要再次询问当前密码。对所有类似重要的事情都一样。

    同样在成功登录或注销后,change the session id:

    session_regenerate_id();
    

    注销:

    session_regenerate_id(true);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      • 1970-01-01
      • 2011-07-23
      • 2011-06-11
      • 2012-04-12
      • 2016-04-08
      • 2023-03-12
      相关资源
      最近更新 更多