integralservice / doctrine-encrypt-bundle
Symfony 2 扩展包,允许使用加密算法在数据库中加密数据
v3.0.0
2018-10-01 14:36 UTC
Requires
- php: >=7.2
- doctrine/orm: >=2.5
- symfony/framework-bundle: >=3.4
README
该扩展包允许创建 doctrine 实体,这些实体的字段在数据库中将使用某些加密算法进行保护,这对于开发人员来说非常清晰,因为扩展包使用 doctrine 生命周期事件。
这是一个从 vmelnik-ukrain 创建的原始扩展包的分支,感谢他(许多感谢),原始扩展包可以在以下位置找到:vmelnik-ukraine/DoctrineEncryptBundle
我改进了几个方面,更好地利用了 doctrine 事件,并且它支持延迟加载(关系)!这将是一个长期项目,我们将长期支持和向后兼容。我们正在将这个扩展包用于我们所有的自己的 symfony2 项目。
它具体做什么
它为您提供了在每个字符串属性上添加 @Encrypted 注解的机会
/** * @Encrypted */ protected $username;
该扩展包使用 doctrine 的生命周期事件,在插入数据库时加密数据,在加载到实体管理器时解密数据。目前它只能加密字符串值,数字和其他字段将在开发过程中添加。
加密数据库的优点和缺点
优点
- 信息存储安全
- 无需担心在其他位置保存备份
- 对于管理数据库的员工来说是不可读的
缺点
- 不能对加密数据使用 ORDER BY
- 在 SELECT WHERE 语句中,WHERE 条件值也必须加密
- 当你丢失密钥时,你将丢失你的数据(在安全位置备份密钥)
文档
此扩展包负责数据库中的数据加密/解密。所有加密/解密工作都在服务器端进行。
以下文档可用
许可证
此扩展包受 MIT 许可证的约束。请参阅扩展包中的完整许可证。
版本
我使用语义版本控制,如此处所述。
待办事项
以下事项将按顺序完成
完整代码审查 + 修复/改进和内联文档(2.1.1)添加对其他 doctrine 关系的支持(多对多,多对一)(2.2)重新创建文档(2.3)创建示例代码(2.3)创建加密未加密数据库及其逆过程的功能(控制台命令,迁移,更改密钥等)(2.4)- 寻找自动加密查询参数的可能性(2.5)
- 寻找重写 findOneBy 以自动加密参数的可能性(2.6)
- 添加支持通过引用其他属性作为密钥来加密数据(使用用户密钥等特定于用户的数据)(2.7)
- 为所有数据类型添加格式化加密格式化保持加密(3.0)