Карточка Middle Сессии и безопасность обновлено

Случайные значения для токенов

Вопрос

Чем генерировать токены сброса пароля, API-ключи и CSRF-токены?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

Криптографически стойкий генератор: bin2hex(randombytes(32)) или randomint(). Не годятся rand(), mtrand(), uniqid(), md5(time()): их можно предсказать.

Ответ

Криптографически стойкий генератор: bin2hex(random_bytes(32)) или random_int(). Не годятся rand(), mt_rand(), uniqid(), md5(time()): их можно предсказать. Сравнивать секреты через hash_equals($known, $given), чтобы не было утечки по времени.

Разбор

В БД лучше хранить хеш токена сброса, а не сам токен: утечка базы не даст сбросить чужие пароли.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.