Ссылка для подтверждения с электронной почтой и хэшированным идентификатором пользователя с помощью строки salt. Безопасно ли это?

#php #hash #email-verification

#php #хэш #электронная почта-проверка

Вопрос:

что вы думаете о создании ссылки для подтверждения, имеющей строку запроса, составленную из параметров as email и hash ?

  • электронная почта — это обычная строка электронной почты зарегистрированного пользователя в html-кодировке,
  • хэш — это результирующее значение PHP-функции password_hash , где строка для первого параметра представляет собой уникальный идентификационный номер пользователя, выбранный из базы данных с помощью фиксированной строки соли.

Я думал о том, чтобы также переключить соль, но можно угадать идентификационный номер пользователя для данного электронного письма, передав его password_hash и получив действительный хэш для строки запроса (даже если password_hash автоматически добавляет соль самостоятельно.), поэтому я думаю, что это небезопасно.

Я думал что-то вроде этого:

 // the result of SELECT from the database (I use Mysql)
$id    = '5';
// fixed salt string
$salt  = 'xbrENiBq6kb87WrZYhxS';
$email = urlencode($email);
$key   = $id . $salt;
$hash  = urlencode(password_hash($key, PASSWORD_DEFAULT));

// the resulted querystring:
$url = "somesite.com/index.php?email=$emailamp;hash=$hash";
  

затем я отправлю это на электронную почту пользователя.

Пожалуйста, не могли бы вы сказать мне, о чем вы думаете? Большое спасибо!

Ответ №1:

Зависит от вашей кодировки, вы можете попробовать смешивать различные типы encode, чтобы получить реальное значение. Ваш конечный результат для сравнения с базой данных должен быть md5 строкой, таким образом, вы также не потеряете производительность.

 SELECT md5(your_field) FROM table
  

Извините за плохой английский.

Комментарии:

1. Не нужно извиняться за плохой английский. Но вы также должны поместить ` вокруг вашего кода, чтобы отформатировать его красиво.