§§IBT7§§¶@definition¶CORS (Cross-Origin Resource Sharing) — браузерный механизм, который с помощью HTTP-заголовков позволяет серверу явно определить, каким внешним источникам разрешено читать ответы на межсайтовые запросы.¶@plain¶Политика одного источника по умолчанию ограничивает чтение ответов другим сайтом. CORS не отключает эту модель целиком, а задаёт контролируемые исключения, которые сервер сообщает браузеру.¶@use¶Сервер проверяет Origin по точному списку доверенных источников, корректно обрабатывает preflight, ограничивает методы и заголовки и особенно осторожно разрешает credentials. CORS не заменяет аутентификацию и авторизацию API.¶@example¶API должен быть доступен только приложению на `app.example.ru`. Сервер возвращает разрешающий заголовок для этого origin, но не отражает произвольное значение из запроса и не открывает credentialed-доступ всем сайтам.¶@compare¶CSRF¦/slovar-informacionnoy-bezopasnosti/upravlenie-uyazvimostyami-pentest-red-team/cross-site-request-forgery-csrf¦CSRF заставляет браузер отправить нежелательный запрос¤CSP¦¦CSP управляет разрешёнными источниками контента и решает другую задачу¶@steps¶Запрос¦Браузер определяет, что источник страницы отличается от источника ресурса.¤Предварительная проверка¦Для ряда запросов браузер отправляет OPTIONS с описанием метода и заголовков.¤Ответ сервера¦Сервер явно указывает разрешённые источники, методы, заголовки и режим учётных данных.¤Решение браузера¦Браузер предоставляет ответ скрипту только при выполнении политики CORS.¶@resources¶Курсы AppSec¦https://ibcourses.ru/appsec-kursy¦Курс¤Каталог российских СЗИ¦https://ibcourses.ru/katalog-ib-resheniy¦Решения¶@related¶¶@faq¶Что такое CORS простыми словами?¦CORS позволяет серверу сообщить браузеру, каким внешним origin разрешено читать его ответы.¤Зачем нужен preflight-запрос?¦Для запросов с определёнными методами или заголовками браузер сначала отправляет OPTIONS и проверяет разрешения сервера.¤Почему Access-Control-Allow-Origin: * не всегда безопасен?¦Звёздочка открывает чтение ответа любому origin и несовместима с credentialed-запросами; допустимость зависит от публичности ресурса.