💡 Инструкция: Выберите один ответ из пяти. Для каждого секрета определите срок жизни, способ хранения и последствия утечки. Таймер — 85 минут.
Вопрос 10 из 30
Какой порядок корректен?
PHP Копировать
if($user && password_verify($password,$user->hash)){
session_regenerate_id(true);
$_SESSION['uid']=$user->id;
if(password_needs_rehash($user->hash,PASSWORD_DEFAULT)) $repo->rehash($user->id,password_hash($password,PASSWORD_DEFAULT));
}
Сначала создать сессию, затем проверить пароль и только после этого искать пользователя
Проверить статус аккаунта до поиска пользователя, а rehash выполнить до verify
Сравнить строку хеша оператором ===, затем вызвать password_verify для журнала
Сделать rehash каждого сохранённого пароля при запуске приложения без входа пользователя
Найти пользователя, verify, проверить статус, regenerate session ID, при нужде rehash
Вопрос 21 из 30
Какие пароли нужны в тесте?
PHP Копировать
$cases = [
'correct' => ['correct horse', true],
'wrong' => ['wrong', false],
'empty' => ['', false],
'unicode' => ['пароль🔐', true],
'long' => [str_repeat('a', 200), false],
];
Верный, неверный, пустой, длинный и Unicode — без реальных пользовательских секретов
Реальный пароль администратора в закрытом наборе интеграционных тестов
Только один популярный пароль, чтобы тест не зависел от кодировки
Пустое значение и null, не проверяя длинные строки и Unicode
Только случайный хеш без известного исходного значения
Вопрос 22 из 30
Что проверять при rehash?
PHP Копировать
$oldHash = password_hash($password, PASSWORD_BCRYPT, ['cost' => 10]);
assert(password_verify($password, $oldHash));
assert(password_needs_rehash($oldHash, PASSWORD_BCRYPT, ['cost' => 12]));
$newHash = password_hash($password, PASSWORD_BCRYPT, ['cost' => 12]);
assert(password_verify($password, $newHash));
Убедиться, что новый хеш совпадает с паролем при сравнении оператором ===
Сравнить соли старого и нового хеша: они должны быть одинаковыми
Проверить только password_needs_rehash, не выполняя verify до и после обновления
Старый хеш проходит verify, needs_rehash true, новый проходит verify и больше не требует обновления
Проверить лишь изменение длины строки хеша после password_hash