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' post, Шифрование моделей Laravel Eloquent с помощью CipherSweet.
Чтобы начать работу с этим пакетом, ознакомьтесь с ним на GitHub по адресу spatie/laravel-ciphersweet.
.