metarush/cookie-sessions

使用加密cookie作为会话处理程序的零存储会话

v3.1.0 2022-06-04 21:49 UTC

This package is auto-updated.

Last update: 2024-09-05 02:49:34 UTC


README

使用加密cookie作为会话处理程序的零存储会话

此库是传统会话存储(如文件系统、数据库、内存等)的替代品。使用此库可以利用浏览器cookie作为会话存储,并在无需维护传统会话存储的情况下实现可扩展性。

安装

通过composer安装为metarush/cookie-sessions

用法

  1. 在终端中输入vendor/bin/generate-defuse-key生成加密密钥。

  2. 定义cookie选项(请参考\setcookie()函数的options参数)。

<?php

$options = [
    'path' => '/',
    'secure' => true,
    'httponly' => true
];

注意:不要设置expires选项,此库将使用session.gc_maxlifetime ini指令。

  1. 在您的脚本顶部设置自定义会话处理程序。
$secretKey = 'replace this with the generated key';
$cookiePrefix = 'your_identifier'; // optional cookie prefix, keep it short, alphanumeric with _ suffix (e.g., XYZ_)
$handler = new \MetaRush\CookieSessions\Handler($secretKey, $options, $cookiePrefix);
session_set_save_handler($handler, true);
session_start();
  1. 正常使用$_SESSIONS
$_SESSIONS['foo'] = 'bar';

注意

  • 此库使用defuse/php-encryption加密cookie中的会话数据。
  • $secretKey隐藏起来,不要公开。
  • 浏览器通常对每个域名有4,000字节的cookie总限制。
  • 如果您尝试设置一个等于≥4,000字节的会话变量(加密形式),将会抛出E_USER_WARNING。
  • 此限制计算的是加密形式的数据,相当于大约1,900个未加密的数据。
  • 此限制不包括已写入的其他会话数据或同一域名上使用cookie的脚本。
  • 尽可能减少每个域名上的会话/cookie变量,以便为其他脚本腾出空间(如果适用)。