Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Здравствуйте!
Есть в базе поле для телефона, телефон хранится в зашифрованном виде (зашифрован с помощью Crypt::encrypt). Подскажите, пожалуйста, как можно провести валидацию на уникальность при добавлении нового номера? Можно было бы с помощью того же Crypt::encrypt, но он на один и тот же номер генерирует разный шифр.
Не в сети
Хранить параллельно ещё одно поле с хэшем, например, md5(phone) или sha1(phone) (естественно, параметр phone — декодированный). encrypt() выдаёт всегда разный результат для одинаковых строк, поэтому его в виде индекса использовать нельзя.
UPD: но тут, естественно, нужно после phone добавить ещё какую-то случайную строку (соль), иначе все ваши закодированные телефоны можно относительно легко и быстро подобрать через это поле. md5("$phone-cO2mgpvikmHESdA")
Не в сети
Большое спасибо за ответ! Да, способ интересный. Почему-то мне он в голову не пришёл. Скажите, а это вообще правильный ход? Ну, хранить телефон в шифрованном виде? Я просто переживаю об номерах, на которые могут слать спам в случае утечки базы.
Нет, шансы самой утечки малы, но думаю лучше перестраховаться.
Не в сети
- Ну, хранить телефон в шифрованном виде?
Отличный ход, если пароли хэшируют, то почему не шифровать другие личные данные?
Не в сети
Ну тогда хорошо. Буду шифровать.
Шифрование выдаёт строку минимум 48-64 байта, то есть если телефон у вас занимает 10 байт (символов), то так он будет занимать в 6-7 раз больше.
Это не страшно. На миллионы записей я не рассчитываю, такого не будет.
что к таким полям нельзя применять стандартные функции SQL
Да это тоже не сильно мешает. Поиск по телефонам я делать не буду. Нет нужды. Шифровать намерен только телефоны, ибо только они "уязвимы".
Большое спасибо за ответ! Буду действовать.
Не в сети
Увы, почему-то принято защищать только пароли, оставляя личные данные открытыми, хотя это зачастую так же опасно, как и сами пароли, а то и ещё опаснее. Так что приятно видеть людей, которые думают об этом шире, чем принято стереотипом.
Не в сети
Спасибо.
Не в сети
Страницы 1