#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. Не нужно извиняться за плохой английский. Но вы также должны поместить ` вокруг вашего кода, чтобы отформатировать его красиво.