xorgxx/neox-doctrine-secure-bundle

此包已被废弃,不再维护。作者建议使用xorgxx/doctrine-encryptor-bundle包。

此包提供在您的应用程序数据库系统中加密/解密敏感数据的功能。其主要目标是使您能够轻松地管理数据库中的加密和解密敏感数据!此包旨在更新旧的包[DoctrineEncryptBundle]

dev-master 2024-02-18 23:27 UTC

This package is auto-updated.

Last update: 2024-02-24 16:54:17 UTC


README

我们将重构所有代码,使其更优化;一个想法是使其更清晰。

新项目名称 | DoctrineEncryptorBundle | ==================================

NeoxDoctrineSecureBundle { Symfony 6/7 }

此包提供在您的应用程序数据库系统中加密/解密敏感数据的功能。其主要目标是使您能够轻松地管理数据库中的加密和解密敏感数据!此包旨在更新旧的包DoctrineEncryptBundle

此包的目的是以自动和透明的方式建立强大的加密和解密系统,通过外部化数据,严格遵守欧洲建议和通用数据保护条例(GDPR)的指令。

2024-02-13-10-33-55.png

安装 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: 管理状态、加密、解密等更为便捷。

感谢