加密会话(SSL)Cookie 中缺少 Secure 属性(PHP)

使用https访问时, 需要给cookie加上Secure和HttpOnly属性, 但需要注意:

设置HttpOnly=true的cookie不能被js获取到,无法用document.cookie打出cookie的内容。

1. 设置secure

可以看到,只要在setcookie第六个参数设置为true,就可以了

2. 设置httponly

在5.1和之前的版本在header设置

<?php
header("Set-Cookie: hidden=value; httpOnly");

在5.2和更高的版本
Cookie 参数可以在 php.ini文件中定义
如果需要设置有几个选择
1. 修改php全局配置

#1) 直接修改php.ini文件
session.cookie_httponly=true

#2) 此配置可以在php代码中使用`ini_set`函数设置
ini_set("session.cookie_httponly", 1);

#3),在调用 session_start()之前调用 session_set_cookie_params()函数设置
<?php
private function startSession($time = 3600, $ses = 'MYSES') {
    session_set_cookie_params($time);
    session_name($ses);
    session_start();
    if (isset($_COOKIE[$ses]))
      #第五个参数 设置为true
      setcookie($ses, $_COOKIE[$ses], time() + $time, "/", true);
}
?>

session_set_cookie_params()函数session_start() 函数
2. 在设置cookie时直接指定httponly
前面介绍在setcookie函数第7个参数httponly设置为true即可.

注意事项

setcookie的httponly参数 在5.2.0版本开始才有

参考:https://www.jianshu.com/p/87a72c26db2a

You may also like...