【问题标题】:How to set a cookie with the secure flag in PHP?如何在 PHP 中设置带有安全标志的 cookie?
【发布时间】:2020-01-11 01:19:13
【问题描述】:

我想在我的代码中将 httponly 和安全标志设置为 true,但是当我尝试设置该 cookie 时。在这种情况下,不会创建 cookie,因此无法登录网站。

ini_set('session.cookie_httponly', 1);
ini_set('session.cookie_secure', 1); 
session_name('sim');
$_SESSION['nons']=rand(1,999999999);
$value=md5($_SERVER["REMOTE_ADDR"]." ".$_SERVER["HTTP_USER_AGENT"]." ".$_SESSION['nons']);
$_SESSION['sim']=$value;
session_start();
session_regenerate_id();

这是用于在删除以下行代码后创建会话 cookie 的代码将完美运行

ini_set('session.cookie_httponly', 1);
ini_set('session.cookie_secure', 1); 

但为了安全起见,我需要设置一个 cookie 标志

【问题讨论】:

  • 我看到了你的会话,你的$_COOKIE 呢?
  • 我不使用 $_COOKIE 基本上我使用上面的代码来重新生成默认会话 cookie 的值,即 PHPSESSID
  • cookies 存储在客户端,会话存储在服务器端。我在这里没有看到你的 cookie ^
  • 您为什么要尝试为会话变量赋值,您甚至再次启动/拿起会话之前?
  • “出于安全目的” 不能有效回答您为什么以错误的顺序做事的问题……您需要先启动会话,然后将值分配给会话变量。 (您的安全标志问题甚至与该部分没有任何关系。这只是关于您的代码点的一般提示,目前没有多大意义。)

标签: php cookies session-cookies


【解决方案1】:

安全标志表示“此 cookie 仅通过 HTTPS 有效”。

您正在使用 HTTP(没有 S)。

这意味着cookie无效,浏览器正确忽略了它。

如果您的通信渠道不安全,您就不能要求 cookie 是安全的。

【讨论】:

    猜你喜欢
    • 2018-04-28
    • 2012-10-13
    • 2016-09-11
    • 2018-03-25
    • 2010-11-29
    • 2015-12-12
    • 1970-01-01
    • 2017-09-11
    • 2022-01-07
    相关资源
    最近更新 更多