Межсайтовая подделка запроса (CSRF)

Что такое CSRF: подделка запроса и проверка полномочий

CSRF, межсайтовая подделка запроса, использует ситуацию, когда браузер отправляет учетные данные к действию приложения без надлежащего подтверждения намерения пользователя. Защита зависит от маршрута, проверки запроса и полномочий. Наличие входа, скрытой кнопки или токена в странице не доказывает, что сервер правильно ограничивает действие.

Почему законный сеанс не означает намеренное действие

Браузер может автоматически прикладывать связанные учетные данные к запросам в соответствующих условиях. Приложение должно различать контроль сеанса и намерение выполнить меняющее состояние действие. Одного факта пользователь уже вошел для этого недостаточно.

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

OWASP описывает защиту через поддерживаемые механизмы фреймворка, корректную проверку токенов и дополнительные браузерные условия. Выбор зависит от архитектуры, а не от универсального скрытого поля. Проверять нужно серверное решение до выполнения действия.

OWASP: защита от CSRF и границы браузерных механизмов

Намерение запроса и полномочия являются разными проверками

Даже корректно связанный запрос не дает пользователю право менять любой объект. Авторизация должна подтвердить действие и область ресурса. И наоборот, наличие подходящей роли не означает, что запрос действительно пришел по ожидаемому пользовательскому маршруту.

Скрытие кнопки в интерфейсе не является серверным ограничением. Проверка должна существовать на стороне, где выполняется операция. Для приемки связывают пользователя, объект, действие и способ подтверждения запроса, не ограничиваясь видом страницы.

Запросы браузера и серверные уведомления интеграций имеют разные модели доверия. Например, вебхук может использовать подпись поставщика вместо пользовательского сеанса. Нельзя распространять исключение одного callback-маршрута на все формы сайта.

Матрица проверки действия

Следующая таблица является рабочим шаблоном CyberFixCrew. Она помогает владельцу и разработчику согласовать, что именно должно подтверждаться. Это не код для копирования и не результат активного тестирования.

Проверки выполняют до изменения состояния, а итог связывают с конкретным маршрутом. Поддерживаемый механизм защиты фреймворка требует корректного использования: одно название middleware не доказывает охват каждой операции.

Идентичность, запрос и разрешенное действие
ВопросЧто подтвердитьНедостаточное свидетельство
Кто обращается?Нужный контекст идентичностиНа странице виден профиль
Что запрашивается?Операция и целевой объектЕсть знакомая кнопка
Как подтвержден запрос?Поддерживаемая серверная проверкаТокен просто присутствует в разметке
Разрешено ли действие?Права на этот объект и операциюПользователь вошел в систему
Как участвует браузер?Условия cookie и маршрутаОдин общий флаг без анализа
Есть ли отдельная интеграция?Ее собственная модель доверияВыключили проверку для всего приложения

SameSite и WordPress nonce имеют ограничения

SameSite влияет на отправку cookie браузером, но не является универсальной заменой защиты приложения. Нужно учитывать межсайтовые и внутрисайтовые условия, методы и зависимые рабочие маршруты. Механическое ужесточение может также затронуть законные переходы.

WordPress прямо поясняет: его nonces не проверяются на строго одноразовое использование и не заменяют аутентификацию, авторизацию или управление доступом. Наличие nonce не означает защиту от любого повтора и не дает права выполнять действие.

Условный пример: обработчик проверяет nonce, но не проверяет право пользователя менять выбранную запись. Защита запроса и полномочия здесь являются разными задачами. Пример вымышленный: код клиента и реальные записи не проверялись.

OWASP: защита от CSRF и границы браузерных механизмовWordPress: nonce, полномочия и ограничения повторного использования

Как проверять исправление безопасно

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

Проверьте фактический маршрут, где решение принимает сервер, а не только экран формы. Убедитесь, что исключения понятны и не распространяются на лишние действия. Если доступ к реализации отсутствует, обозначьте предел вместо полного вывода.

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

  1. Назвать действие, роли и область объектов.
  2. Уточнить модель сеанса и подтверждения запроса.
  3. Отдельно проверить авторизацию.
  4. Провести разрешенные безопасные сценарии.
  5. Сохранить результат, исключения и ограничения.

Как связать понятие с задачей бизнеса

Если вопрос касается формы, настроек или callback, сначала определите, кто должен инициировать действие и как это подтверждается. Затем выберите соответствующую область проверки. Наличие HTTPS, фильтра или общего высокого балла не отвечает на все эти вопросы.

CyberFixCrew - израильская компания по кибербезопасности сайтов и цифровой инфраструктуры. Работаем с русскоязычными бизнесами по всему миру и применяем израильские знания к защите рабочих процессов: от действий администратора до запросов интеграций. Перед проверкой согласуем роли, доступы и ожидаемый результат.

Официальная документация и источник: OWASP: защита от CSRF и границы браузерных механизмовОфициальная документация и источник: WordPress: nonce, полномочия и ограничения повторного использования

Ответы на вопросы

Вопросы по теме

Если пользователь вошел в аккаунт, CSRF уже невозможен?

Сеанс подтверждает отдельный контекст, но не обязательно намерение выполнить конкретное действие. Нужны соответствующая защита запроса и проверка полномочий. Приемка должна охватывать серверный маршрут и нужный объект, а не только страницу входа.

WordPress nonce является одноразовым разрешением?

В WordPress он имеет ограниченный срок, но не проверяется как строго одноразовый. Он не заменяет аутентификацию и права на действие. Разработчик должен применять поддерживаемые проверки запроса и полномочий отдельно.

Вебхуку нужна та же защита, что форме пользователя?

Серверное уведомление и браузерная форма могут иметь разные модели доверия. Вебхук проверяют по схеме поставщика, сохраняя узкую область исключений. Нельзя отключать защиту всех пользовательских действий из-за несовместимости одного callback-маршрута.

ОБСУДИМ ВАШУ ЗАДАЧУ?

Уточним, как приложение подтверждает рабочее действие

Опишите форму или маршрут без секретов. Согласуем роли, область и безопасную приемку.

Обсудить защиту запросов