本篇文章给大家分享一个Laravel扩展:Ciphersweet包,介绍一下怎么利用Laravel Ciphersweet 来加密/解密 Laravel 中的 Eloquent 模型字段,希望对大家有所帮助!
Laravel Ciphersweet 是由 Spatie 提供的一个包,用于在Laravel应用程序中集成可搜索的字段级加密。该包的 readme 解释了密码甜蜜可以帮助解决的问题,如下所示:
在你的项目中,你可能会将敏感的个人数据存储在数据库中。如果未经授权的人访问你的数据库,则所有敏感数据都可以读取,这显然是不好的。
要解决此问题,你可以对个人数据进行加密。这样,未经授权的人无法读取它,但当你需要显示或使用数据时,你的应用程序仍然可以解密它。
这个包是 Ciphersweet 的包装器,可以轻松地将其功能集成到 Laravel 模型中。以下是自述文 setup instructions 中的模型示例,该示例说明了使用 Ciphersweet 模型的外
use SpatieLaravelCipherSweetContractsCipherSweetEncrypted; use SpatieLaravelCipherSweetConcernsUsesCipherSweet; use ParagonIECipherSweetEncryptedRow; use IlluminateDatabaseEloquentModel; 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 的