Шифруйте та розшифровуйте поля моделі Eloquent у програмах Laravel

  • Час читання ~1 хв
  • 2022-09-20 16:29:19
Laravel Ciphersweet — це пакет для інтеграції шифрування на рівні поля з можливістю пошуку в програми Laravel.

Laravel Ciphersweet — це пакет від Spatie для інтеграції шифрування на рівні полів для пошуку в програмах Laravel. У пакеті readme пояснюється проблема, яку Ciphersweet може допомогти вирішити таким чином:

У вашому проекті ви можете зберігати конфіденційні особисті дані у своїй базі даних. Якщо неавторизована особа отримає доступ до вашої БД, усі конфіденційні дані можна буде прочитати, що явно не добре.

Щоб вирішити цю проблему, ви можете зашифрувати особисті дані. Таким чином, неавторизовані особи не зможуть прочитати його, але ваша програма все одно може розшифрувати його, коли вам потрібно відобразити або працювати з даними.

Цей пакет є оболонкою для Ciphersweet для інтеграції його функцій в моделі Laravel легко. Ось приклад моделі з readme's інструкції з налаштування, які ілюструють, як виглядає модель із використанням 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 на цій сторінці, яка містить багато пов’язаних ресурсів.

CipherSweet також має документацію для PHP\, яка допоможе вам швидше ознайомитися з основним пакетом PHP.

Я також рекомендую прочитати Rias' публікація, Шифрування моделей Laravel Eloquent за допомогою CipherSweet.

Щоб почати роботу з цим пакетом, перегляньте його на GitHub за адресою spatie/laravel-ciphersweet.

Оригінал
avatar

Yurij Finiv

Full stack

ABOUT

I'm full stack laravel developer

I knew my call in programming back in 2006.

WORK EXPERIENCE
CONTACT
Ukraine, Lutsk
+380979856297