ekino / data-protection-bundle
数据保护包
v3.1.0
2024-06-19 14:59 UTC
Requires
- php: ^8.1
- ext-json: *
- ext-openssl: *
- monolog/monolog: ^3.6.0
- symfony/config: ^5.4 || ^6.4 || ^7.0
- symfony/console: ^5.4 || ^6.4 || ^7.0
- symfony/dependency-injection: ^5.4 || ^6.4 || ^7.0
- symfony/form: ^5.4 || ^6.4 || ^7.0
- symfony/http-kernel: ^5.4 || ^6.4 || ^7.0
- symfony/options-resolver: ^5.4 || ^6.4 || ^7.0
- symfony/translation: ^5.4 || ^6.4 || ^7.0
- symfony/validator: ^5.4 || ^6.4 || ^7.0
Requires (Dev)
- dg/bypass-finals: ^1.4
- ekino/phpstan-banned-code: ^1.0
- friendsofphp/php-cs-fixer: ^3.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
- sonata-project/admin-bundle: ^4.0
- sonata-project/twig-extensions: ^2.0
This package is auto-updated.
Last update: 2024-09-01 13:48:56 UTC
README
这是一个正在开发中的项目,所以如果您想实现某些功能,请随时提出或贡献以帮助我们!
目的
此包通过加密保护您项目的数据。
安装
步骤 1:添加依赖项
$ composer require ekino/data-protection-bundle
步骤 2:注册包
Symfony 2 或 3
<?php // app/AppKernel.php public function registerBundles() { $bundles = [ // ... new Ekino\DataProtectionBundle\EkinoDataProtectionBundle(), // ... ]; }
Symfony 4
<?php // config/bundles.php return [ // ... Ekino\DataProtectionBundle\EkinoDataProtectionBundle::class => ['all' => true], // ... ];
步骤 3:配置包
ekino_data_protection: encryptor: method: aes-256-cbc # default secret: foo # required encrypt_logs: true # default use_sonata_admin: false # default
方法(method)是openssl_get_cipher_methods()中的一个。
用法
加密日志
此包为Monolog提供了一个处理器,以加密日志,使其不具人类可读性。要使用它,只需在每个要加密的数据的上下文字段前添加前缀private_
,例如
<?php $logger->critical('Something to be logged', [ 'a_non_sensitive_data' => 'foo', // won't be encrypted 'private_firstname' => 'John', // will be encrypted ]);
然后,数据可以在安全区域内使用加密器进行解密。
如果您不想使用它,可以在配置中禁用它
ekino_data_protection: encrypt_logs: false
解密日志
此包为Sonata Admin提供了一个面板,可以解密上述处理器加密的日志。要使用它,在配置中启用它
ekino_data_protection: use_sonata_admin: true
然后,您可以将以下路由 admin_app_logs_decrypt_encrypt
添加到菜单中。此路由提供了一个只包含一个字段的表单,您可以在其中填写日志的加密部分或包含多个日志的完整文本。在多个加密日志的情况下,每个解密结果将在一个专门的选项卡中显示。
在运行时解密密钥
此包提供了一个处理器,使用配置的加密器在运行时解密密钥。这允许您不泄露您的密钥,并且可以轻松地旋转密钥而无需刷新缓存。
要使用它,只需像以下示例那样使用前缀 ekino_encrypted
# .env
DATABASE_URL=d6NhbhWDBVpj5l3gYD5BiKLeYxJllx7Lf8hJXhtoJ70=
# config/packages/doctrine.yaml doctrine: dbal: url: '%env(ekino_encrypted:DATABASE_URL)%'
使用 CLI 加密文本
要加密文本,运行以下命令
bin/console ekino-data-protection:encrypt myText
,可选地带有 --secret mySecret
和/或 --method myCipher