Как можно создать ссылку такого типа? - PullRequest
0 голосов
/ 08 апреля 2020

Я вижу сайт, на котором используется сброс пароля, и в Интернете отправляют на вашу электронную почту ссылку с шифрованием другого уровня, это ссылка:

domain.com/dshgfuigt73567345873464783tryweuygyu

Какой тип шифрования какого типа системы используйте, чтобы получить такую ​​чистую ссылку, как получить dshgfuigt73567345873464783tryweuygyu

Кто-то знает, я часами искал все типы шифров для php, и 0 возвращает мне такой текст. Большое спасибо, мой первый вопрос !!

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

Это не шифрование, скорее это похоже на «токен». Когда вы хотите сбросить пароль, веб-сайт должен убедиться, что вы настоящий пользователь. Таким образом, он создает уникальный токен, сохраняет его в базе данных и отправляет вам по электронной почте. После того, как вы щелкнете по нему, сервер проверит свою базу данных, если сможет найти этот токен. Если он есть, он позволит сбросить пароль.

С точки зрения реализации существует множество способов добиться этого. Самый простой способ - просто использовать одну из многих случайных функций PHP. Например, «random_bytes».

Например:

$myAwesomeToken = random_bytes(20);
print(bin2hex($myAwesomeToken));

Поскольку random_bytes возвращает двоичные данные, вам потребуется bin2hex, чтобы преобразовать их в читаемую человеком строку. Результат может быть сохранен в пользовательской таблице вашей базы данных. Вы можете использовать это для создания URL и отправки его пользователю.

Подробнее об этой функции можно узнать здесь:

https://www.php.net/manual/en/function.random-bytes.php

Обычно хорошей идеей является сохранение даты и времени, когда было отправлено письмо с перезаписью. Затем вы можете сделать его недействительным по истечении c времени. Так же, как маленький намек. :)

0 голосов
/ 08 апреля 2020

Это не шифрование (поскольку его невозможно расшифровать *), это ха sh. В частности, он имеет 43 буквенно-цифровых символа c, что примерно означает, что его двоичное представление составляет 256 бит. (итак, 32 байта). Поэтому я бы сказал, что это SHA-256 , но это также может быть фиктивная строка, созданная из алгоритма «накатить свой».

Когда вы пытаетесь восстановить свой пароль, случайный ха sh генерируется и отправляется вам по электронной почте и обычно вставляется в таблицу «passwords_resets». Когда вы посещаете сайт, га sh, который вы указываете в ссылке, обрабатывается (через перезапись веб-сервера) как аргумент строки запроса.

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

Хэши - это просто способ сгенерируйте, казалось бы, уникальную строку, чтобы вы не могли угадать ха sh из ниоткуда. В настоящее время существуют другие способы генерирования такой строки, потому что вычислительная мощность возросла в геометрической прогрессии со времен, когда считалось, что SHA256 нерушима. 1023 *, вы можете попытаться найти строку, чей ha sh соответствует одному из ваших вопросов. Опять же, имея достаточную вычислительную мощность, вы, в конце концов, получите.

(я думал, что у sha-256 было 44 символа, но я не могу найти, откуда у меня это представление ... может быть, это дополнительный символ? )

...