Мне нужен какой-то способ генерирования уникального токена, который можно передать в базу данных MySQL и хранить там, пока он не будет сброшен вручную. Таким образом, это должен быть случайный токен, который будет отображаться пользователю, который должен оставаться действительным, но также иметь некоторую функцию, которая может сбрасывать его — например, ссылка «ключ сброса» для автоматического обновления, изменения и отображения нового токена.
Я пробовал этот код, но он обновляется каждый раз при перезагрузке страницы:
global $wpdb;
global $user_login;
$token = uniqid();
$hashedtoken = md5($token);
$user = $user_login;
$wpdb->insert('wp_tokens',
array('user' => $user, 'token' => $hashedtoken),
array('%s','%s')
);
echo $hashedtoken;
Может быть очевидно, что я использую WordPress, если это имеет значение. Я даже не уверен, что PHP — лучший вариант здесь.
Редактировать: Мой вопрос был помечен как аналогичный этот, и некоторые классные люди сообщили, что мне нужно запросить базу данных, чтобы проверить, существует ли токен для пользователя. Тем не менее, понятия не имею, как это сделать. Благодарю.
md5(uniqid($your_user_login, true))
Вот что говорит PHP об использовании uniqid()
для генерации «случайных» строк:
Предупреждение
Эта функция не создает случайных или непредсказуемых строк. это
функция не должна использоваться в целях безопасности. Использовать
криптографически защищенная случайная функция / генератор и
криптографически безопасные хеш-функции для создания непредсказуемого безопасного
Идентификаторы.
Хэш неслучайной строки все еще не является случайным.
Вот ссылка на два популярных вопроса о генерации случайной строки в PHP:
сначала вы должны хотя бы использовать ша http://php.net/manual/de/function.sha1.php — Независимо от того, что вы делаете с токеном, в наши дни дети-сценаристы любят сканировать в Интернете страницы, которые все еще используют длину строки md5.
быстрый взлом будет проверить, если токен уже существует в вашей базе данных