Три разных проверки
Authentication отвечает, кто перед нами. Session связывает следующие запросы с установленной личностью. Authorization решает, может ли этот субъект выполнить конкретное действие над конкретной тренировкой. Смешивание вопросов создаёт классическую ошибку: любой вошедший пользователь меняет id в URL и видит чужую запись.
Контроллер загружает минимальный контекст, use case применяет политику доступа, repository ограничивает запрос владельцем там, где это уместно. Скрытая кнопка не является проверкой: HTTP-запрос можно собрать вручную.
Маршрут доверия
Пароль не шифруют
password_hash создаёт одностороннее представление с солью и параметрами алгоритма, password_verify проверяет его, password_needs_rehash помогает обновлять настройки после успешного входа. Приложение не выбирает собственный быстрый хеш и не хранит обратимо зашифрованный пароль.
Ответ для неизвестного email и неправильного пароля формулируется одинаково. Ограничение частоты учитывает несколько сигналов и не превращается в простой способ навсегда заблокировать чужую учётную запись.
Восстановление доступа
Токен восстановления случайный, одноразовый, короткоживущий и хранится в базе в хешированном виде. Ссылка передаётся только по HTTPS. После изменения пароля связанные сеансы отзываются согласно политике, а событие попадает в безопасный аудит.
Не отвечайте, зарегистрирован ли email. Интерфейс может всегда сообщать, что инструкция отправлена, если адрес существует. Внутренний журнал различает исходы, но не содержит сырого токена.
Политика объекта
<?php
declare(strict_types=1);
function mayReadWorkout(int $actorId, int $ownerId, bool $isCoach): bool
{
return $actorId === $ownerId || $isCoach;
}
echo mayReadWorkout(17, 17, false) ? 'allowed' : 'denied';Лабораторная работа
Составьте сценарии регистрации, входа, чтения тренировки и восстановления пароля. Для каждого укажите ответы, ограничения частоты, ротацию сессии и отрицательный тест чужого id.
Закрепите материал
Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.
Перелинковка со справочником
Проверка актуальности
- cheatsheetseries.owasp.orghttps://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.htmlПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- cheatsheetseries.owasp.orghttps://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.htmlПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
Текст и схемы созданы для этого самоучителя без воспроизведения страниц, иллюстраций и листингов приложенной книги. Проверено: .