【问题标题】:How to secure cookies in php?如何保护 php 中的 cookie?
【发布时间】:2021-05-07 12:49:30
【问题描述】:

session_set_cookie_params 是如何工作的? 我想确保所有 cookie 都设置为 httponly=truesecure=true。 但不是将这些参数添加到对 setcookie() 的每次调用中,我可以 只是 - 在 session_start() 之前 - 将它们设置在 session_set_cookie_params()? 从今以后,每次调用setcookie 都会设置那些params 我每个cookie? 这将节省大量繁琐的工作(而且肯定容易出错)。 我会想象这样的事情

$cookieParams = session_get_cookie_params();
$cookieParams['httponly'] = true;
$cookieParams['secure'] = true;
session_set_cookie_params($cookieParams);
session_start();

那么现在,如果我这样做:

 setcookie("ABC_user", "", time()+3600);

那个 cookie 在参数 6 和 7 中设置了那些参数?有没有办法检查它是否有效?还是有更好的方法来实现这一点?

【问题讨论】:

  • session_set_cookie_params 仅影响由session_start 设置的会话ID cookie(或任何其他实际与会话相关的函数,可能会重新生成会话ID cookie。)一般setcookie 函数与此没有任何关系
  • 如果您希望您的普通 cookie 设置有特定的额外参数,而不必每次都将它们写出来 - 那么您最好创建自己的包装函数,使用这些明确指定的值调用 setcookie
  • 非常感谢您提供的信息。我怀疑我的愿景好得令人难以置信...... :-D

标签: php security session-cookies


【解决方案1】:

这个简单的代码会给你你想要的。

function set_cookie($name,$content,$time){
$http_only = true;
$secure = true;
$path = "/";
$domain = ".example.com"; // Include All Subdomains
setcookie($name,$content,$time,$path,$domain,$secure,$http_only);
}

set_cookie("ABC_user", "", time() + 3600);

【讨论】:

  • WhereIsBurak: 是这样的。我更喜欢将默认参数值保持原样,来自 php 文档。但它节省了我的一天。谢谢你。我会将其设置为接受的答案。
猜你喜欢
  • 1970-01-01
  • 2011-08-24
  • 2012-05-03
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
  • 2011-12-05
  • 1970-01-01
  • 2011-10-02
相关资源
最近更新 更多