adayth/cakephp-cipher-behavior

使用 CakePHP ORM 和此行为来保护您的数据库数据

1.0.0 2015-06-24 12:13 UTC

This package is not auto-updated.

Last update: 2024-09-25 16:19:25 UTC


README

使用 CakePHP 安全类和此行为,神奇地加密您的实体数据。

安装

首先使用 composer 将此插件安装到您的 CakePHP 应用程序中。

安装 composer 包的简单方法是

composer require adayth/cakephp-cipher-behavior

之后,您应该通过编辑 config/bootstrap.php 来加载插件

Plugin::load('CipherBehavior');

使用方法

您可以将此行为添加到表中,在从/到数据库保存/检索实体数据时加密/解密数据。要使用它,您应该在表模式中定义二进制列以存储加密数据。

存储加密信用卡的表模式示例

CREATE TABLE IF NOT EXISTS `credit_cards` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `type` blob NOT NULL,
  `number` blob NOT NULL,
  `expire_date` blob NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

按照示例,要使用此表与行为一起使用

class CreditCardsTable extends Table
{
    public function initialize(array $config)
    {
        parent::initialize($config);

        // Add Cipher behavior
        $this->addBehavior('CipherBehavior.Cipher', [
            'fields' => [
                'type' => 'string',
                'number' => 'string',
                'expire_date' => 'date',
            ]
        ]);
    }
}

行为配置

配置允许指定由行为管理的字段以及配置加密密钥/盐。

  • fields(必需):由行为管理的字段数组。 是列名, 是在 Cake\Database\Type 中注册的列类型。请参阅 CakePHP 书籍 - 数据类型 以查看核心 CakePHP 类型。
  • key(必需/可选):您可以在行为配置中指定一个密钥,由安全类用于加密/解密数据。
  • salt(必需/可选):您可以在行为配置中指定一个盐,由安全类用于加密/解密数据。

keysalt 也可以通过两个配置键全局设置: App.Encrypt.keyApp.Encrypt.salt。示例

Configure::write('App.Encrypt.key', 'your long not legible key');
Configure::write('App.Encrypt.salt', 'your long not legible salt');

为了获得良好的密钥/盐组合,您可以使用 Wordpress 密钥/盐生成器随机密钥生成器 或允许您的猫/狗/在此处插入您的宠物玩一分钟...

实现说明

加密是通过使用 beforeSave 和 beforeFind 事件来完成的,使用 CakePHP Security 类的 encrypt / decrypt 方法以及 Cake\Database\Type 将数据从和到数据库转换为正确的类型。需要使用类型列,因为所有数据都以二进制格式存储和加密在数据库中。因此,在加密/解密前后转换类型是必需的。

重要:当前测试仅涵盖 stringintegerdate 列类型。

支持

有关错误和功能请求,请使用此存储库的 问题 部分。

贡献

欢迎贡献。您应该遵循此指南

许可

版权所有 2015,Aday Talavera <aday.talavera at gmail.com>

在 MIT 许可证下许可。