lukeelten / cakephp-encrypted-session
一种加密会话中间件,使用每个用户的密钥在服务器端加密会话。
1.0.5
2019-12-03 14:16 UTC
Requires
- php: >=7.1
- cakephp/cakephp: ^3.6.15
Requires (Dev)
- cakephp/cakephp-codesniffer: 2.*
- phpunit/phpunit: ~6.0
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,则必须确保 EncryptedCookieMiddleware 在 EncryptedSessionMiddleware 之前加载到中间件链中。
$middleware->add(new EncryptedCookieMiddleware()) ->add(new EncryptedSessionMiddleware());