alfredvaa / doctrine-encrypt-bundle
Symfony 2 扩展,允许使用加密算法在数据库中加密数据
v2.5.7
2018-04-13 10:25 UTC
Requires
- php: >=5.4
- ext-mcrypt: *
- doctrine/orm: >=2.5
- symfony/framework-bundle: >=2.5
README
#DoctrineEncryptBundle
这是一个来自 ambta 创建的扩展的分支。
该扩展允许创建 doctrine 实体,其中的字段将在数据库中使用某些加密算法进行保护,并对开发者来说非常清晰,因为扩展使用了 doctrine 生命周期事件。
这是从 vmelnik-ukrain (非常感谢他) 创建的原始扩展的一个分支,可以在以下链接找到: vmelnik-ukraine/DoctrineEncryptBundle
我对几个方面进行了改进,更好地使用了 doctrine 事件。它还支持懒加载(关系)!这是一个长期项目,我们将长期支持并保持向后兼容性。我们正在将这个扩展用于我们所有的 symfony2 项目。更多关于我们的信息可以在我们的网站上找到。 Ambta.com
###它具体做什么
它允许你在每个字符串属性上添加 @Encrypt 注解
/** * @Encrypt */ 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)格式保持加密 Doctrine 文档类型