Gernar
HTTP, API и сеть

Против чего борется CORS

Разбор вопроса «Против чего борется CORS» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.

Вопрос

Против чего борется CORS

Профессия

Frontend Developer

Что хочет услышать интервьюер

Интервьюер хочет убедиться, что кандидат понимает, как CORS обеспечивает безопасность, ограничивая межсайтовые запросы, и знает его роль в современной веб-разработке. Важно показать понимание разницы между CORS и Same-Origin Policy, а также умение объяснить, как CORS предотвращает уязвимости.

Ключевые тезисы

  • CORS (Cross-Origin Resource Sharing) борется с ограничениями политики Same-Origin Policy (SOP), которая запрещает запросы между разными доменами.
  • CORS позволяет безопасно разрешать межсайтовые запросы, контролируя, какие домены могут получать доступ к ресурсам сервера.
  • CORS защищает пользователей от атак, таких как CSRF (Cross-Site Request Forgery), ограничивая несанкционированные запросы.
  • CORS требует явного указания разрешенных доменов, методов и заголовков в HTTP-заголовках сервера (например, Access-Control-Allow-Origin).

Подробный ответ

CORS (Cross-Origin Resource Sharing) — это механизм, который позволяет браузерам безопасно выполнять запросы к ресурсам на другом домене, если это явно разрешено сервером. Этот механизм был разработан для борьбы с ограничениями политики Same-Origin Policy (SOP), которая запрещает браузерам выполнять запросы к ресурсам на другом домене. SOP была создана для защиты пользователей от атак, таких как CSRF (Cross-Site Request Forgery), когда злоумышленник может заставить браузер пользователя выполнить нежелательные действия на другом сайте. Однако в современных веб-приложениях часто требуется взаимодействие между разными доменами, например, когда фронтенд на одном домене запрашивает данные с API на другом домене. CORS позволяет серверу явно указать, какие домены, методы и заголовки разрешены для кросс-доменных запросов. Это достигается с помощью специальных HTTP-заголовков, таких как Access-Control-Allow-Origin, Access-Control-Allow-Methods и Access-Control-Allow-Headers. Если сервер не поддерживает CORS или неправильно настроен, браузер блокирует запрос, чтобы защитить пользователя от потенциальных угроз. Таким образом, CORS обеспечивает баланс между безопасностью и функциональностью, позволяя безопасно выполнять кросс-доменные запросы.

Практические примеры

Пример 1

Предположим, у вас есть фронтенд-приложение на домене https://frontend.com, которому нужно запросить данные с API на домене https://api.example.com. Если API поддерживает CORS, он может добавить заголовок Access-Control-Allow-Origin: https://frontend.com, чтобы разрешить запросы с этого домена.

Пример 2

Если ваш запрос включает пользовательские заголовки или использует методы, отличные от GET/POST, браузер сначала отправляет предварительный запрос (preflight request) с методом OPTIONS. Сервер должен ответить с заголовками Access-Control-Allow-Methods и Access-Control-Allow-Headers, чтобы подтвердить, что такие запросы разрешены.

Частые ошибки

  • Типичная ошибка — неправильная настройка заголовка Access-Control-Allow-Origin. Например, использование * для всех доменов может быть опасно, если API содержит конфиденциальные данные.
  • Еще одна ошибка — игнорирование предварительных запросов (preflight), что приводит к ошибкам CORS для сложных запросов.

Связанные темы

  • Same-Origin Policy (SOP) — политика браузеров, которая ограничивает взаимодействие между разными доменами.
  • CSRF (Cross-Site Request Forgery) — тип атаки, который CORS помогает предотвратить.
  • HTTP-заголовки, такие как Access-Control-Allow-Origin, Access-Control-Allow-Methods и Access-Control-Allow-Headers.

Follow-up вопросы

Что такое Same-Origin Policy и как она работает?

Уровень: basic

Same-Origin Policy (SOP) — это механизм безопасности браузера, который ограничивает взаимодействие между ресурсами разных доменов. Он разрешает запросы только в рамках одного источника (протокол, домен, порт).

Как браузер определяет, что запрос является кросс-доменным?

Уровень: intermediate

Браузер сравнивает протокол, домен и порт источника запроса с целевым ресурсом. Если хотя бы один из этих параметров отличается, запрос считается кросс-доменным.

Какие HTTP-заголовки связаны с CORS и как они используются?

Уровень: intermediate

Основные заголовки CORS: Access-Control-Allow-Origin (разрешает домены), Access-Control-Allow-Methods (разрешенные HTTP-методы), Access-Control-Allow-Headers (разрешенные заголовки запроса). Сервер использует их для контроля доступа.

Как работает предварительный запрос (preflight request) в CORS?

Уровень: advanced

Предварительный запрос (OPTIONS) отправляется браузером перед основным запросом для проверки разрешений сервера. Сервер отвечает, указывая, какие методы и заголовки разрешены.

Какие риски безопасности могут возникнуть при неправильной настройке CORS?

Уровень: advanced

Неправильная настройка CORS может привести к уязвимостям, таким как несанкционированный доступ к данным или CSRF-атаки. Например, если Access-Control-Allow-Origin установлен в * для чувствительных данных.

Содержание