本篇文章給大家分享一個Laravel擴展:Ciphersweet包,介紹一下怎么利用Laravel Ciphersweet 來加密/解密 Laravel 中的 Eloquent 模型字段,希望對大家有所幫助!
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', '[email protected]');
此包還有助于生成加密密鑰和加密模型屬性,以加快與密碼的集成。
我想指出的是,你不應該在不了解你試圖解決的用例的來龍去脈的情況下盲目地使用這個包。你可以在 此頁面 上了解有關 CipherSweet 的更多信息,其中包含許多鏈接資源
CipherSweet 還具有 PHP 特定文檔 可幫助您快速了解底層 PHP 包。
我還建議閱讀 Rias 的帖子,使用 CipherSweet 加密 Laravel Eloquent 模型。
要開始使用這個包,請在 GitHub 上的 spatie/laravel-ciphersweet 上查看它。