PHP PHP  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Сессии и cookie

Здесь проверяется жизненный цикл сессии: когда допустимо менять заголовки, зачем обновлять идентификатор и какие свойства cookie действительно снижают риск. Сценарии приближены к авторизации, выходу из аккаунта и параллельным запросам.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. Прослеживайте момент создания заголовка и изменение состояния сессии. На тест отведено 55 минут.
Вопрос 1 из 20
Что нужно сделать до обращения к $_SESSION в обычном запросе?
PHP
session_start();
$_SESSION['user_id'] = 42;
Вопрос 2 из 20
Почему второй AJAX-запрос того же пользователя может ждать завершения первого?
PHP
session_start();
$user = loadUser($_SESSION['user_id']);
sleep(5);
echo json_encode($user);
Вопрос 3 из 20
Что делает session_write_close()?
Вопрос 4 из 20
Что выведет код, если в загруженной сессии ключ count ещё отсутствует?
PHP
session_start();
$_SESSION['count'] = ($_SESSION['count'] ?? 0) + 1;
echo $_SESSION['count'];
Вопрос 5 из 20
Сценарий только читает роль пользователя, затем выполняет тяжёлый отчёт. Где уместно закрыть сессию?
Вопрос 6 из 20
Что хранится в типичной cookie PHPSESSID?
PHP
setcookie(session_name(), session_id(), [
    'secure' => true,
    'httponly' => true,
]);
Вопрос 7 из 20
Какую строку следует добавить сразу после успешной проверки пароля, чтобы снизить риск фиксации сессии?
PHP
session_start();
if ($auth->check($email, $password)) {
    // Здесь нужно сменить идентификатор сессии.
    $_SESSION['user_id'] = $auth->userId();
}
Вопрос 8 из 20
Почему нельзя считать значение PHPSESSID идентификатором пользователя?
Вопрос 9 из 20
Какой риск создаёт передача идентификатора сессии в URL?
Вопрос 10 из 20
Что произойдёт после session_id($id), если session_start ещё не вызван?
PHP
session_id($_GET['sid']);
session_start();
Вопрос 11 из 20
Что даёт HttpOnly для cookie сессии?
PHP
setcookie('session', $id, [
    'path' => '/',
    'secure' => true,
    'httponly' => true,
]);
Вопрос 12 из 20
Какое назначение атрибута Secure?
Вопрос 13 из 20
Как SameSite=Lax обычно влияет на кросс-сайтовые запросы?
Вопрос 14 из 20
Что означает Path=/account для cookie?
Вопрос 15 из 20
Как задать защитные параметры сессионной cookie до запуска?
PHP
session_set_cookie_params([
    'secure' => true,
    'httponly' => true,
    'samesite' => 'Lax',
]);
session_start();
Вопрос 16 из 20
Как работает атака фиксации сессии?
PHP
session_id($_GET['sid'] ?? '');
session_start();

if ($credentials->valid()) {
    $_SESSION['user_id'] = $user->id;
}
Вопрос 17 из 20
Почему одной проверки IP-адреса недостаточно для защиты сессии?
Вопрос 18 из 20
Что должен сделать выход из аккаунта?
Вопрос 19 из 20
В приложении роль пользователя повысили до администратора. Какое действие обязательно рассмотреть?
Вопрос 20 из 20
Почему код уязвим?
PHP
session_id($_GET['sid'] ?? '');
session_start();
if (checkPassword($_POST)) {
    $_SESSION['user'] = 42;
}

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу