Могли бы вы объяснить принцип защиты от атак типа CSRF и как она реализуется в веб-приложениях?

CSRF (Cross-Site Request Forgery) — это атака, при которой злоумышленник заставляет пользователя выполнить нежелательное действие на доверенном сайте, где он аутентифицирован.

Короткий ответ

Что ответить на собеседовании

CSRF (Cross-Site Request Forgery) — это атака, при которой злоумышленник заставляет пользователя выполнить нежелательное действие на доверенном сайте, где он аутентифицирован.

Подробный разбор

Ответ с пояснениями

CSRF (Cross-Site Request Forgery) — это атака, при которой злоумышленник заставляет пользователя выполнить нежелательное действие на доверенном сайте, где он аутентифицирован.

Защита от CSRF в веб-приложениях реализуется с помощью уникальных токенов (CSRF-токенов), которые генерируются сервером и включаются в формы или запросы. При отправке формы сервер проверяет, что токен совпадает с ожидаемым, что подтверждает легитимность запроса.

Пример реализации в PHP:

  1. Генерация токена и сохранение в сессии:
session_start();
if (empty($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
  1. Включение токена в HTML-форму:
<form method="POST" action="submit.php">
    <input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">
    <!-- другие поля -->
    <input type="submit" value="Отправить">
</form>
  1. Проверка токена при обработке запроса:
session_start();
if (!hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'] ?? '')) {
    die('Ошибка CSRF: неверный токен');
}
// продолжить обработку

Таким образом, сервер отвергает запросы без корректного токена, предотвращая CSRF-атаки.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее