xorgxx / neox-doctrine-secure-bundle
此包提供在您的应用程序数据库系统中加密/解密敏感数据的功能。其主要目标是使您能够轻松地管理数据库中的加密和解密敏感数据!此包旨在更新旧的包[DoctrineEncryptBundle]
Requires
- php: >=8.1
- doctrine/inflector: ^2.0
- paragonie/halite: ^5.1
- symfony/config: ^6.3|^7.0
- symfony/console: ^6.3|^7.0
- symfony/dependency-injection: ^6.3|^7.0
- symfony/deprecation-contracts: ^2.2|^3
- symfony/filesystem: ^6.3|^7.0
- symfony/finder: ^6.3|^7.0
- symfony/framework-bundle: ^6.3|^7.0
- symfony/http-kernel: ^6.3|^7.0
- symfony/process: ^6.3|^7.0
- symfony/property-access: ^6.3|^7.0
Requires (Dev)
- composer/semver: ^3.0
- doctrine/doctrine-bundle: ^2.5.0
- doctrine/orm: ^2.10.0
- symfony/http-client: ^6.3|^7.0
- symfony/maker-bundle: ^1.51
- symfony/phpunit-bridge: ^6.3|^7.0
- symfony/security-core: ^6.3|^7.0
- symfony/yaml: ^6.3|^7.0
- twig/twig: ^2.0|^3.0
Conflicts
- doctrine/doctrine-bundle: <2.4
- doctrine/orm: <2.10
- symfony/doctrine-bridge: <5.4
This package is auto-updated.
Last update: 2024-02-24 16:54:17 UTC
README
我们将重构所有代码,使其更优化;一个想法是使其更清晰。
新项目名称 | DoctrineEncryptorBundle | ==================================
NeoxDoctrineSecureBundle { Symfony 6/7 }
此包提供在您的应用程序数据库系统中加密/解密敏感数据的功能。其主要目标是使您能够轻松地管理数据库中的加密和解密敏感数据!此包旨在更新旧的包DoctrineEncryptBundle
此包的目的是以自动和透明的方式建立强大的加密和解密系统,通过外部化数据,严格遵守欧洲建议和通用数据保护条例(GDPR)的指令。
安装 BETA 版本 !!
使用 Composer 安装此包 !! 因为它仍然处于 beta 版本 !!
composer require xorgxx/neox-doctrine-secure-bundle
or
composer require xorgxx/neox-doctrine-secure-bundle:0.* or dev-master
🚨 您需要在项目中添加它。 🚨
composer require paragonie/halite
.env 文件
....
# standalone = "buit-in" only type string 255, text
# external = this mode will externalize data in one entity (TODO : redis )
NEOX_ENCRY_DSN=standalone://redis
NEOX_ENCRY_SALT="**@#$#*#&%&@$&^@" # 16 bit
NEOX_ENCRY_PWS="03~é][a6{1;a7a^e2d" # password your want (more long, more secure, more time to process)
....
neox_doctrine_secure.yaml 文件
neox_doctrine_secure:
# (default)false or true | it will turn off the bundle. by aware that it will render nothing !! field on front will by empty!!
# this is only for testing purpose in Development mode !!!
neox_off: false
####
neox_dsn: "%env(NEOX_ENCRY_DSN)%"
neox_pws: "%env(NEOX_ENCRY_PWS)%"
neox_salt: "%env(NEOX_ENCRY_SALT)%"
neox_encryptor: haliteII # halite or haliteII
🚨 您需要迁移以添加 NeoxEncryptor 实体 🚨
symfony make:migration
symfony doctrine:migrations:migrate
我们仅实现了 Halite 服务以进行加密/解密
注意: 您可能需要使用 [ symfony composer dump-autoload ] 重新加载自动加载
..... 完成 🎈
用法 !
在实体中,您要安全字段(数据)
use NeoxDoctrineSecure\NeoxDoctrineSecureBundle\Attribute\neoxEncryptor; .... #[ORM\Column(type: Types::TEXT, nullable: true)] #[neoxEncryptor] private ?string $content = null; ....
重要!
考虑您要加密的字段的大小/长度!!例如:长度:10
#[neoxEncryptor] #[ORM\Column(length: 20)] private ?string $name = null; "john doe" <- decrypt / encrypt -> "MUIFAOpLp21iX1Dy2ZNkYbby6zo7ADYgVs-hGkNaWR2OF5AbQUMcBKZHigtFVxZiIFWyOTV8Ts-9q_pNAHBxCKcAPZNJjfPgVQglMLAKi0bZicmPlCQKJpRpX2k5IAjAqawOlFsPpD9KikIEFRhuy"
工具功能
偶尔,我们可能需要访问全部数据范围(4000行或更多)以进行各种检查或分析。然而,由于加密数据的转换而等待数小时是不理想的。在这种情况下,禁用 EventListener 是必不可少的。
use NeoxDoctrineSecure\NeoxDoctrineSecureBundle\Pattern\NeoxDoctrineTools;
...
// this will stop eventlistener to decrypt
$neoxTableBuilder->EventListener();
$entity = $parametersRepository->findAll()
// this will restart eventlistener to decrypt
$neoxTableBuilder->EventListener(true);
// data on the field encrypted will be empty
贡献
如果您想为此包做出贡献(感谢您!)以下是一些指南
- 请尊重Symfony 指南
- 测试一切!当您
- 修复一个之前未涵盖的漏洞
- 添加一个新功能
- 看到一些代码正在工作,但没有任何测试覆盖(天堂中有一个特殊的地方为您预留)
待办事项
* 为存储哈希添加远程系统 => 密钥 以便能够根据专用类型 | 整数、字符串、电话等进行加密/解密
- 自定义提供者类 加密/解密。
- 调度器到自定义代码。
- 命令 wawa: 管理状态、加密、解密等更为便捷。