jagilpe/encryption

一个用于加密实体内容的 Symfony 扩展包

安装: 110

依赖: 0

建议者: 0

安全性: 0

星星: 3

关注者: 2

分支: 1

开放问题: 4

类型:symfony-bundle

1.0.0 2017-05-21 09:20 UTC

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

文档

默认情况下禁用加密。有关如何启用和使用扩展包的进一步说明,您可以参考使用文档 这里

API 参考

https://api.gilpereda.com/encryption-bundle/master/