CakePHP Encrypted Type
![Software License][ico-license]
![Coverage Status][ico-scrutinizer]
![Total Downloads][ico-downloads], (*1)
This plugin provides a CakePHP 4 encrypted database type for application-level
encryption. Before using this plugin you may want to weigh your options
between full-disk, database-level, and application-level encryption.
This plugin was born out of Amazon Aurora not supporting encryption with cross
region replication before March 28, 2017., (*2)
Install
Via Composer, (*3)
``` bash
$ composer require bcrowe/cakephp-encrypted-type, (*4)
Load the plugin in your application's `bootstrap.php` file, then define the type
mapping:
``` php
Plugin::load('BryanCrowe/EncryptedType');
Type::map('encrypted', 'BryanCrowe\EncryptedType\Database\Type\EncryptedType');
Make sure to have a Encryption.key
config value in your config/app.php
file:, (*5)
``` php
[
'Encryption' => [
'key' => env('ENCRYPTION_KEY', 'defaultencryptionkeygoesrighthereyaythisisfun'),
],
], (*6)
## Usage
**Note:** This database type expects columns to be nullable in the case of an
omitted column or whenever explicitly setting a `null` value for a column.
Use `BLOB` types for columns that are to be encrypted, for example:
``` sql
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;
Map the type
to a column in your Table class:, (*7)
``` php
<?php
namespace App\Model\Table;, (*8)
use Cake\Database\Schema\TableSchema;
use Cake\ORM\Table;, (*9)
class UsersTable extends Table
{, (*10)
protected function _initializeSchema(TableSchema $schema)
{
$schema->columnType('first_name', 'encrypted');
$schema->columnType('last_name', 'encrypted');
$schema->columnType('email', 'encrypted');
return $schema;
}
}, (*11)
## Changelog
Please see [CHANGELOG](CHANGELOG.md) for more information what has changed
recently.
## Testing
``` bash
$ composer test
Contributing
Please see CONTRIBUTING and CONDUCT for
details., (*12)
Security
If you discover any security related issues, please email bryan@bryan-crowe.com
instead of using the issue tracker., (*13)
Credits
License
The MIT License (MIT). Please see License File for more
information., (*14)