Cookie整理随笔

163 阅读2分钟

cookie 相关

问题

lti tool不能传递cookie (iframe方式)

SESSION知识


`session.gc_maxlifetime` integer

`session.gc_maxlifetime` 指定过了多少秒之后数据就会被视为“垃圾”并被清除。 垃圾搜集可能会在 session 启动的时候开始( 取决于[session.gc_probability](https://www.php.net/manual/zh/session.configuration.php#ini.session.gc-probability) 和 [session.gc_divisor](https://www.php.net/manual/zh/session.configuration.php#ini.session.gc-divisor))。

> **Note**:
>
> 如果不同的脚本具有不同的 `session.gc_maxlifetime` 数值但是共享了同一个地方存储会话数据,则具有最小数值的脚本会清理数据。此情况下,与 [session.save_path](https://www.php.net/manual/zh/session.configuration.php#ini.session.save-path) 一起使用本指令。

`session.gc_probability` integer

`session.gc_probability``session.gc_divisor` 合起来用来管理 gc(garbage collection 垃圾回收)进程启动的概率。默认为 `1`。详见 [session.gc_divisor](https://www.php.net/manual/zh/session.configuration.php#ini.session.gc-divisor)。

`session.gc_divisor` integer

`session.gc_divisor``session.gc_probability` 合起来定义了在每个会话初始化时启动 gc(garbage collection 垃圾回收)进程的概率。此概率用 gc_probability/gc_divisor 计算得来。例如 1/100 意味着在每个请求中有 1% 的概率启动 gc 进程。`session.gc_divisor` 默认为 `100`

COOKIE知识

Same Site 属性

  • Strict
  • Lax
  • None
ini_set('session.cookie_samesite', 'None');
ini_set('session.cookie_secure', 1); //m

实验结果:

http时单独设定任意一项, chrome会警告必须一起使用或者没有在secure connection,重新计算cookie.

https时成功.

原因: chrome等浏览器默认samesite=Lax ,此模式在iframe请求不会带参数.

cookie 过期时间

ini_set('session.cookie_lifetime', 3);

cookie 域

待定

cookie path

待定

session path

待定

session_cache_limiter session_cache_expire

看一些文章是和history.go(-1)时表单显示相关,还未做相关实验

/* 设置缓存限制为 “private” */

session_cache_limiter('public');
$cache_limiter = session_cache_limiter();
var_dump($cache_limiter);

/* 设置缓存过期时间为 30 分钟 */
session_cache_expire(1);
$cache_expire = session_cache_expire();
var_dump($cache_expire);

处理方法

  • 可配置选择是否开启url传参
  • 自制证书和证书配置搭建https服务

结果

可使用关闭url传参实现登陆

参考问题

LTI and Moodle NEW SameSite=None; Secure Cookie Settings breaks LTI

lti third party cookies

参考文档

Session Functions

Cookie 的 SameSite 属性

[详解Cookie、Session和缓存](www.cnblogs.com/laoluoits/p…) 运行时配置