adayth / cakephp-cipher-behavior
使用 CakePHP ORM 和此行为来保护您的数据库数据
Requires
- php: >=5.4.16
- cakephp/cakephp: ~3.0
Requires (Dev)
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(必需/可选):您可以在行为配置中指定一个盐,由安全类用于加密/解密数据。
key 和 salt 也可以通过两个配置键全局设置: App.Encrypt.key
和 App.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
将数据从和到数据库转换为正确的类型。需要使用类型列,因为所有数据都以二进制格式存储和加密在数据库中。因此,在加密/解密前后转换类型是必需的。
重要:当前测试仅涵盖 string、integer 和 date 列类型。
支持
有关错误和功能请求,请使用此存储库的 问题 部分。
贡献
欢迎贡献。您应该遵循此指南
- 拉取请求必须发送到
dev
分支。 - 遵循 CakePHP 编码标准。
- 请,为新的功能添加 测试。
许可
版权所有 2015,Aday Talavera <aday.talavera at gmail.com>
在 MIT 许可证下许可。