在Laravel应用程序中加密和解密Eloquent模型字段扩展包:Laravel Ciphersweet

2023-06-01 00:00:00 字段 加密 解密

Laravel Ciphersweet是Spatie的一个包,用于在Laravel应用程序中集成可搜索的字段级加密。

该软件包的自述文件解释了Ciphersweet可以帮助解决的问题如下:

> 在您的项目中,您可能会将敏感的个人数据存储在数据库中。
 如果未经授权的人访问您的数据库,则可以读取所有敏感信息,这显然是不好的。

 为了解决这个问题,您可以加密个人数据。
 这样,未经授权的人无法读取它,但是当您需要显示或使用数据时,您的应用程序仍然可以解密它。


这个包是Ciphersweet的包装器,可以轻松地将其功能集成到Laravel模型中。

以下是自述文件的设置说明中的模型示例,该示例说明了使用Ciphersweet时模型的外观:

use Spatie\LaravelCipherSweet\Contracts\CipherSweetEncrypted;
use Spatie\LaravelCipherSweet\Concerns\UsesCipherSweet;
use ParagonIE\CipherSweet\EncryptedRow;
use Illuminate\Database\Eloquent\Model;
 
class User extends Model implements CipherSweetEncrypted
{
    use UsesCipherSweet;
 
    public static function configureCipherSweet(EncryptedRow $encryptedRow): void
    {
        $encryptedRow
            ->addField('email')
            ->addBlindIndex('email', new BlindIndex('email_index'));
    }
}

这允许您加密用户的电子邮件,以防止未经授权的人阅读数据,但让您能够解密数据以显示或使用它。


配置此包并设置模型后,您可以使用盲索引在数据库中搜索加密数据:

$user = User::whereBlind('email', 'email_index', '[email protected]');


该软件包还有助于生成加密密钥和加密模型属性,以加快与Ciphersweet的集成。

我想指出的是,你不应该在不了解你试图解决的用例的来龙去脉的情况下盲目地使用这个包。

您可以在此页面上了解有关 CipherSweet 的更多信息,该页面有许多链接资源。

https://ciphersweet.paragonie.com/

CipherSweet 还具有特定于 PHP 的文档,可帮助您快速了解底层 PHP 包。

https://ciphersweet.paragonie.com/php

我还建议阅读 Rias 的帖子,使用 CipherSweet 加密 Laravel Eloquent 模型。

https://rias.be/blog/encrypting-laravel-eloquent-models-with-ciphersweet

要开始使用这个包,请在 GitHub 上的spatie/laravel-ciphersweet上查看它。

https://github.com/spatie/laravel-ciphersweet


转:

https://laravel-news.com/laravel-ciphersweet

相关文章