smoked/doctrine-encrypt-bundle

Symfony 2 扩展包,允许使用某些加密算法在数据库中加密数据

v3.0.1 2017-05-03 08:48 UTC

README

#DoctrineEncryptBundle

该扩展包允许创建使用加密算法在数据库中保护字段的doctrine实体,因为它使用doctrine生命周期事件,所以对于开发者来说非常清晰。

这是从vmelnik-ukrain创建的原版扩展包的一个分支(非常感谢他),可以在以下地址找到: vmelnik-ukraine/DoctrineEncryptBundle

我改进了几个方面,更好地使用了doctrine事件,并且它与懒加载(关系)一起工作!这将是一个长期项目,我们将进行长期支持和支持向后兼容。我们在所有自己的symfony2项目中使用这个扩展包。更多关于我们的信息可以在我们的网站上找到。 Ambta.com

###它具体做什么

它允许您在每个字符串属性上方添加@Encrypt注解

/**
 * @Encrypt
 */
protected $username;

该扩展包使用doctrine的生命周期事件在将数据插入数据库时加密数据,在加载到实体管理器时解密数据。目前它只能加密字符串值,数字和其他字段将在开发过程中添加。

###加密数据库的优缺点

####优点

  • 信息存储安全
  • 无需担心在其他位置保存备份
  • 对管理数据库的员工不可读

####缺点

  • 不能对加密数据进行ORDER BY操作
  • 在SELECT WHERE语句中,WHERE值也必须加密
  • 如果您丢失了密钥,您就会丢失数据(请确保在安全位置备份密钥)

###文档

此扩展包负责加密/解密数据库中的数据。所有加密/解密工作都在服务器端进行。

以下文档可供参考

###许可协议

此扩展包采用MIT许可协议。请参阅扩展包中的完整许可协议

###版本

我使用语义版本控制,如此处所述

###待办事项

以下项目将按以下顺序完成

  1. 完整代码审查 + 修复/改进和内联文档(2.1.1)
  2. 添加对其他doctrine关系的支持(manyToMany, ManyToOne)(2.2)
  3. 重新创建文档(2.3)
  4. 创建示例代码(2.3)
  5. 创建一个函数来加密未加密的数据库以及反之亦然(控制台命令、迁移、更改密钥等)(2.4)
  6. 寻找自动加密查询参数的可能性(2.5)
  7. 寻找覆盖findOneBy以自动加密参数的可能性(2.6)
  8. 添加支持通过引用其他属性作为密钥来加密数据(例如使用用户密钥加密特定于用户的数据等)(2.7)
  9. 为所有数据类型添加格式保持加密(3.0)