lukeelten/cakephp-encrypted-session

一种加密会话中间件,使用每个用户的密钥在服务器端加密会话。

1.0.5 2019-12-03 14:16 UTC

This package is auto-updated.

Last update: 2024-09-29 05:01:58 UTC


README

这是一个 CakePHP 插件,它在存储之前透明地加密用户的会话数据。在下一个请求期间,会话数据将自动解密。

为什么需要这个?

新的 GDPR 规定不强制要求对个人数据进行加密,但建议在所有地方加密个人数据,特别是在数据静止时。保存的会话仅仅是静止存储的数据。

由于用户授权或其他应用程序功能,会话通常会包含可以按 GDPR 标准划分为个人数据的数据。因此,加密它们是防止数据泄露的合理安全措施。

为了提高安全性,为每个用户生成一个唯一的加密密钥并将其存储在 cookie 中。将密钥与服务器分离,使得一次性解密所有会话数据变得非常困难。

安装

使用 composer 安装插件

composer require lukeelten/cakephp-encrypted-session

插件在引导过程中不需要加载。

配置

有几个选项可以配置行为,但插件包含一组有用的默认值,因此您 无需进行任何配置

尽管如此,建议至少配置一个加密盐,否则将使用 Security.salt

可以添加到应用程序配置的可能选项

'Session' => [
    "Encryption" => [
        "salt" => getenv("SESSION_SALT", "default-salt"), // Server side salt; fill in random string
        "cookieName" => "CAKE_SESSION_KEY", // Cookie name
        "expire" => strtotime("+1 year"), // Default cookie lifetime
        "secure" => false, // Use with https only
        "path" => "/" // Cookie path
    ]
]

用法

只需将中间件添加到您的应用程序中间件设置(Application.php)

$middleware->add(new EncryptedSessionMiddleware());

重要提示

如果将此中间件与 EncryptedCookieMiddleware 结合使用,并且您还希望加密会话密钥 cookie,则必须确保 EncryptedCookieMiddlewareEncryptedSessionMiddleware 之前加载到中间件链中。

$middleware->add(new EncryptedCookieMiddleware())
    ->add(new EncryptedSessionMiddleware());