richardstyles/eloquent-aes

一个允许使用单独密钥对Laravel Eloquent模型属性进行加密的包

v2.3.0 2023-03-18 17:29 UTC

This package is auto-updated.

Last update: 2024-09-18 21:03:16 UTC


README

此包在使用敏感数据时增加了额外的安全层。允许数据库中Eloquent模型的密钥字段在AES-256-CBC下进行加密。

Latest Version on Packagist Quality Score Total Downloads

简介

此包允许使用不同的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)。请参阅许可文件以获取更多信息。