Назад к вопросам
amoCRM
Junior — Middle
95
Могли бы вы объяснить принцип защиты от атак типа CSRF и как она реализуется в веб-приложениях?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
CSRF (Cross-Site Request Forgery) — это атака, при которой злоумышленник заставляет пользователя выполнить нежелательное действие на доверенном сайте, где он аутентифицирован.
Защита от CSRF в веб-приложениях реализуется с помощью уникальных токенов (CSRF-токенов), которые генерируются сервером и включаются в формы или запросы. При отправке формы сервер проверяет, что токен совпадает с ожидаемым, что подтверждает легитимность запроса.
Пример реализации в PHP:
- Генерация токена и сохранение в сессии:
session_start();
if (empty($_SESSION['csrf_token'])) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
- Включение токена в HTML-форму:
<form method="POST" action="submit.php">
<input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>">
<!-- другие поля -->
<input type="submit" value="Отправить">
</form>
- Проверка токена при обработке запроса:
session_start();
if (!hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'] ?? '')) {
die('Ошибка CSRF: неверный токен');
}
// продолжить обработку
Таким образом, сервер отвергает запросы без корректного токена, предотвращая CSRF-атаки.