iserranodev/encrypt-bundle
Composer 安装命令:
composer require iserranodev/encrypt-bundle
包简介
A Symfony bundle for encrypting entity properties in Database
README 文档
README
Este bundle proporciona funcionalidad de encriptación para entidades de Doctrine en aplicaciones Symfony.
Instalación
- Instala el bundle usando Composer:
composer require iserranodev/encrypt-bundle
- Habilita el bundle en
config/bundles.php:
return [ // ... ISerranoDev\EncryptBundle\ISerranoDevEncryptBundle::class => ['all' => true], ];
Configuración
Variables de Entorno
El bundle utiliza las siguientes variables que puedes configurar en tu archivo .env:
# Valores por defecto proporcionados ISD_ENCRYPT_HASH_KEY=UsLN^Dc6x9xP7n924NJoffw4$6p*9SNg#r0Qql#^bNusXh4dKU ISD_ENCRYPT_METHOD=AES-128-CBC ISD_ENCRYPT_IV=5414358938341622
Configuración del Bundle
Puedes personalizar la configuración en config/packages/i_serrano_dev_encrypt.yaml:
i_serrano_dev_encrypt: encryption_key_path: '%kernel.project_dir%/encryption/encryption.key' # Ruta por defecto hash_key: 'TuNuevaClaveHash' # Opcional: sobreescribe ISD_ENCRYPT_HASH_KEY method: 'TuNuevoMetodo' # Opcional: sobreescribe ISD_ENCRYPT_METHOD iv: 'TuNuevoIV' # Opcional: sobreescribe ISD_ENCRYPT_IV
Uso
- Genera la clave de encriptación (esto creará el archivo en la ruta configurada):
php bin/console iserranodev:encrypt-bundle:generate-key
- Usa el atributo
#[Encrypted]en las propiedades que desees encriptar:
use ISerranoDev\EncryptBundle\Attribute\Encrypted; use App\EventListener\EncryptListener; use Doctrine\ORM\Mapping as ORM; #[ORM\Entity()] #[ORM\Table(name: 'users')] #[ORM\EntityListeners([EncryptListener::class])] class User { #[ORM\Column(type: 'string', length: 255)] #[Encrypted] private ?string $sensitiveData = null; }
- Usa el atributo
#[Hashed]en las propiedades que desees hashear y poder buscar en base de datos:
use ISerranoDev\EncryptBundle\Attribute\Hashed; use App\EventListener\HashListener; use Doctrine\ORM\Mapping as ORM; #[ORM\Entity()] #[ORM\Table(name: 'users')] #[ORM\EntityListeners([HashListener::class])] class User { #[ORM\Column(type: 'string', length: 255)] #[Hashed] private ?string $sensitiveData = null; }
- El bundle automáticamente:
- Encriptará o aplicará un hash los datos antes de guardarlos en la base de datos
- Desencriptará los datos cuando los recuperes
- Manejará las migraciones de Doctrine correctamente
Uso de EncryptService
Puedes usar dicho servicio para encriptar o hashear diferentes textos. El atributo Encrypted usa los métodos hashData y unHashData para poder buscar en base de datos, pero si fuese necesario, también existe el método encryptData y decryptData, el cual no es recomendable para el uso de campos que se pretenden buscar.
En caso de usar los métodos de encrypt, consultar la librería https://github.com/paragonie/halite, ya que el cifrado de los datos con estos métodos están desarrollados mediante dicha librería.
Ubicación de la Clave de Encriptación
Por defecto, el archivo de clave se guarda en:
tu-proyecto/
├── encryption/
│ └── encryption.key
Puedes cambiar esta ubicación en la configuración del bundle.
Seguridad
- No subas el archivo de clave (
encryption.key) a tu repositorio - Asegúrate de incluir
encryption/en tu.gitignore - Mantén una copia segura de tu clave de encriptación
- Considera usar variables de entorno en producción
Soporte para Migraciones
El bundle incluye soporte para migraciones de Doctrine. Para usarlo en tus migraciones:
use ISerranoDev\EncryptBundle\Interface\EncryptAwareMigrationInterface; final class Version20240214123456 extends AbstractMigration implements EncryptAwareMigrationInterface { private EncryptService $encryptService; public function setEncryptService(EncryptService $encryptService): void { $this->encryptService = $encryptService; } public function up(Schema $schema): void { // Usa $this->encryptService para encriptar/desencriptar datos } }
iserranodev/encrypt-bundle 适用场景与选型建议
iserranodev/encrypt-bundle 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 87 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 02 月 14 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「symfony」 「bundle」 「doctrine」 「encryption」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 iserranodev/encrypt-bundle 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 iserranodev/encrypt-bundle 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 iserranodev/encrypt-bundle 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
2lenet/EasyAdminPlusBundle
The bundle for easy using json-rpc api on your project
Provide a way to secure accesses to all routes of an symfony application.
DMS Meetup API Bundle, enables Meetup API clients in services
Make pimcore migration simple
Bundle Symfony DaplosBundle
统计信息
- 总下载量: 87
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 11
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-02-14