ambta / doctrine-encrypt-bundle
Symfony 2 扩展包,允许使用某些加密算法对数据库中的数据进行加密
2.5.6
2020-05-08 14:09 UTC
Requires
- php: >=5.6
- ext-openssl: *
- doctrine/orm: >=2.5
- symfony/framework-bundle: >=2.5
README
警告 此存储库不再积极维护或开发。我们认为以这种方式加密数据库信息不是好的做法,并且主要提供很少的额外保护,但会以可用性和性能的巨大代价为代价。只有在数据库本身被窃取且没有密钥的情况下才能提供帮助。我们已经在自己的项目中逐步淘汰了它。
扩展包允许创建 doctrine 实体,其字段在数据库中将使用某些加密算法进行保护,并且对于开发者来说将非常清晰,因为扩展包使用 doctrine 生命周期事件
这是从 vmelnik-ukrain(非常感谢他)创建的原始扩展包的分支,可以在这里找到:vmelnik-ukraine/DoctrineEncryptBundle
我改进了几个方面,更好地使用了 doctrine 事件,并且它与延迟加载(关系)一起工作!这将是一个长期项目,我们将长期支持它并保持向后兼容性。我们正在使用此扩展包在我们所有的 own symfony2 项目中。更多关于我们的信息可以在我们的网站上找到。 Ambta.com
它确切地做什么
它为您提供了在每个字符串属性上方添加 @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)
- 为所有数据类型添加格式保持加密,参考Doctrine文档数据类型(3.0)