Sobes.tech
Back to questions
Junior — Middle
96

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

Companies where asked
amoCRMamoCRM

Answer from AI

sobes.tech AI

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-атаки.