bcrowe/cakephp-encrypted-type

CakePHP 4 插件,提供应用程序级别的数据库加密。

2.0.1 2020-12-27 13:48 UTC

This package is not auto-updated.

Last update: 2024-09-15 03:49:52 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

此插件提供 CakePHP 4 加密数据库类型,用于应用程序级别加密。在使用此插件之前,您可能需要在全盘加密、数据库级别加密和应用程序级别加密之间权衡选择。此插件源于 Amazon Aurora 在 2017 年 3 月 28 日之前不支持跨区域复制加密。

安装

通过 Composer

$ composer require bcrowe/cakephp-encrypted-type

在应用程序的 bootstrap.php 文件中加载插件,然后定义类型映射

Plugin::load('BryanCrowe/EncryptedType');
Type::map('encrypted', 'BryanCrowe\EncryptedType\Database\Type\EncryptedType');

确保在 config/app.php 文件中有一个 Encryption.key 配置值

[
    'Encryption' => [
        'key' => env('ENCRYPTION_KEY', 'defaultencryptionkeygoesrighthereyaythisisfun'),
    ],
]

使用方法

注意:此数据库类型在省略列或显式设置列的 null 值时,期望列是可空的。

对于需要加密的列,使用 BLOB 类型,例如

CREATE TABLE `users` (
  `id` char(36) NOT NULL DEFAULT '',
  `first_name` blob,
  `last_name` blob,
  `email` blob,
  `created` datetime DEFAULT NULL,
  `modified` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

将类型映射到您的 Table 类的列

<?php
namespace App\Model\Table;

use Cake\Database\Schema\TableSchema;
use Cake\ORM\Table;

class UsersTable extends Table
{

    protected function _initializeSchema(TableSchema $schema)
    {
        $schema->columnType('first_name', 'encrypted');
        $schema->columnType('last_name', 'encrypted');
        $schema->columnType('email', 'encrypted');

        return $schema;
    }
}

变更日志

请参阅 CHANGELOG 了解最近更改的详细信息。

测试

$ composer test

贡献

请参阅 CONTRIBUTINGCONDUCT 了解详细信息。

安全

如果您发现任何安全相关的问题,请通过电子邮件 bryan@bryan-crowe.com 而不是使用问题跟踪器。

致谢

许可

MIT 许可证 (MIT)。请参阅 许可文件 了解更多信息。