jagilpe / encryption
一个用于加密实体内容的 Symfony 扩展包
Requires
- php: >=5.6.0
- doctrine/doctrine-bundle: ~1.2
- doctrine/orm: ~2.2,>=2.2.3
- friendsofsymfony/user-bundle: ~2.0@dev
- jms/metadata: ^1.5
- symfony/framework-bundle: >=2.7
Requires (Dev)
- phpunit/phpunit: ^5.5
- symfony/yaml: >=2.3
This package is not auto-updated.
Last update: 2024-09-28 20:25:28 UTC
README
EncryptionBundle 是一个 Symfony 扩展包,其目的是在实体持久化之前加密它们的内容。
注意!尚未实现所有数据的批量解密。一旦启用扩展包并加密数据,就无法恢复未加密数据。
根据需求和使用限制,有许多加密应用数据的方法。您可以使用操作系统级别的加密来加密保存数据分区,或者使用数据库管理系统的一些扩展在数据库中加密数据...
在决定采用其中一种方法之前,您应该确信它适合您的需求和用例。
EncryptionBundle 最初是为了在一个有明确用例的应用程序中使用而开发的。应用程序的每个用户都可以存储与他相关联的信息,在应用程序的第一阶段,这些信息至少不应该由其他系统用户访问。敏感数据应该加密存储,并且只有其所有者才能解密它。对数据加密的另一个要求是,尽管最初数据应在后端加密和解密,但在某个时候,应该容易将加密和解密移动到客户端(网页浏览器或移动应用程序)。
先决条件
此扩展包假定使用 FOSUserBundle 2.x 来管理应用程序的用户,因此在使用 EncryptionBundle 之前,应该先进行配置。请参阅扩展包文档以进行安装和配置。
目前,唯一支持的持久化提供者是 Doctrine,因此您应该使用它来持久化应该加密的实体。
为了密钥管理和数据加密,此扩展包使用 openssl。您应该在您的服务器上安装至少 openssl-1.0.2k。您还应在您的服务器上安装并启用 php openssl 扩展。请参阅您平台的安装和配置说明。
安装
需求扩展包
您可以使用 composer 安装扩展包
composer require jagilpe/encryption
或将包直接添加到您的 composer.json 文件中。
启用扩展包
要启用扩展包,只需将其注册到您的 AppKernel.php 文件中即可
// in AppKernel::registerBundles() $bundles = array( // ... new Jagilpe\EncryptionBundle\JagilpeEncryptionBundle(), // ... );
创建主加密密钥
扩展包需要主密钥才能在 按用户模式
中恢复用户的加密密钥,或者在 系统模式
中加密和解密数据。要创建新的主密钥,您可以使用 openssl
openssl genrsa -aes256 -out master-key.pem 8192
这将在服务器上的任何位置创建一个名为 master-key.pem 的文件。将此文件复制到您想要的位置。
配置主加密密钥
编辑您的 config.yml 文件,并包含主密钥文件的路由和您创建时使用的密码短语。
// app/config.yml jagilpe_encryption: master_key: cert_file: path_to_master_key/master-key.pem passphrase: key_pass_phrase
文档
默认情况下禁用加密。有关如何启用和使用扩展包的进一步说明,您可以参考使用文档 这里