[Laravel 扩展推荐] 加密/解密 Laravel 中的 Eloquent 模型字段

Laravel

Laravel Ciphersweet 是由 Spatie 提供的一个包,用于在Laravel应用程序中集成可搜索的字段级加密。该包的  readme  解释了密码甜蜜可以帮助解决的问题,如下所示:

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

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

这个包是 Ciphersweet 的包装器,可以轻松地将其功能集成到 Laravel 模型中。以下是自述文  setup instructions  中的模型示例,该示例说明了使用 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', 'rias@spatie.be');

此包还有助于生成加密密钥和加密模型属性,以加快与密码的集成。

我想指出的是,你不应该在不了解你试图解决的用例的来龙去脉的情况下盲目地使用这个包。你可以在 此页面 上了解有关 CipherSweet 的更多信息,其中包含许多链接资源

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

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

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

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laravel-news.com/laravel-ciphers...

译文地址:https://learnku.com/laravel/t/71384

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 7
yangweijie

不支持 7.X 要用 bjorn-voesten/ciphersweet-for-laravel 配置模型用法有差异

7个月前 评论
yangweijie

试用了一下,fips backend 方式可以加密空字符串,默认的会报错。5000条单字段4分钟左右 3个字段20分钟左右

6个月前 评论

不支持php7

2个月前 评论
yangweijie 2个月前
init (作者) 2个月前
yangweijie

后来发现 mysql 有加密扩展 支持表空间加密,还有java 有个中间件可以透明代理加密解密

2个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!