richardstyles / eloquent-aes
一个允许使用单独密钥对Laravel Eloquent模型属性进行加密的包
v2.3.0
2023-03-18 17:29 UTC
Requires
- php: ^7.3|^8.0
- illuminate/encryption: ^8.12.0|^9.0|^10.0
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^8.5.19|^9.5.8
This package is auto-updated.
Last update: 2024-09-18 21:03:16 UTC
README
此包在使用敏感数据时增加了额外的安全层。允许数据库中Eloquent模型的密钥字段在AES-256-CBC下进行加密。
简介
此包允许使用不同的AES-256-CBC密钥对Eloquent加密进行加密。这允许您定期更改app:key。如果您需要4096-RSA加密,请使用RichardStyles/EloquentEncryption
安装
此包需要Laravel 8.x或更高版本。
您可以通过Composer安装此包
composer require richardstyles/eloquent-aes
如果您想更改密钥加密方式,则需要发布配置文件。
php artisan vendor:publish --provider="RichardStyles\EloquentAES\EloquentAESServiceProvider" --tag="config"
要创建Eloquent加密密钥,就像创建app密钥一样。这将自动添加到您的.env
文件底部。
php artisan key:eloquent
⚠️ 请务必备份您的Eloquent密钥
如果您重新运行此命令,您将失去对任何加密数据的访问权限!
使用方法
此包利用Laravel的自身自定义转换来编码/解码值。
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use RichardStyles\EloquentAES\Casts\AESEncrypted; use RichardStyles\EloquentAES\Casts\AESEncryptedCollection; use RichardStyles\EloquentAES\Casts\AESEncryptedObject; class SalesData extends Model { /** * The attributes that should be cast. * * @var array */ protected $casts = [ 'private_data' => AESEncrypted::class, 'private_collection' => AESEncryptedCollection::class, 'private_object' => AESEncryptedObject::class, ]; }
有额外的转换将解密值转换为特定数据类型。如果没有您需要的,只需创建一个包含足够测试的PR。
测试
composer test
更新日志
请参阅更新日志以获取有关最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
支持
如果您在此包上遇到一般问题,请随时通过Twitter联系我。
如果您认为您发现了一个问题,请使用GitHub问题跟踪器报告问题,或者更好的是,分叉存储库并提交一个包含失败测试的pull请求。
如果您正在使用此包,我很乐意听到您的想法。谢谢!
安全性
如果您发现任何与安全相关的问题,请通过richard@udeploy.dev发送电子邮件,而不是使用问题跟踪器。
鸣谢
许可
MIT许可(MIT)。请参阅许可文件以获取更多信息。