В чем разница между CORS и CSP

Ответ

CORS (Cross-Origin Resource Sharing) — механизм, разрешающий запросы между разными доменами. Сервер указывает в заголовках (Access-Control-Allow-Origin), какие источники могут к нему обращаться. Например:

Access-Control-Allow-Origin: https://example.com

CSP (Content Security Policy) — защита от XSS и других атак, ограничивающая загрузку ресурсов (скриптов, стилей и т.д.). Задается через HTTP-заголовок или метатег:

Content-Security-Policy: default-src 'self'; script-src 'unsafe-inline'

Разница:

  • CORS контролирует кросс-доменные запросы
  • CSP ограничивает источники загружаемого контента на странице

Ответ 18+ 🔞

Да ты посмотри, какая интересная парочка подъехала! Сидят два этих, блядь, стража порядка веб-приложений, а народ их постоянно путает, как будто это один и тот же мудак в двух пиджаках.

Ну вот смотри, первый — это CORS. Его главная задача — стоять на границе и решать, кто может зайти с другого участка. Представь, твой сайт — это такой элитный клуб. И вот приходит запрос с какого-нибудь левого адреса, типа https://левая-шалава.com. CORS такой выходит, смотрит в свой список и говорит: «А ты, сука, кто? А, нет тебя в белом списке, пошёл нахуй!». Или наоборот: «О, https://example.com, заходи, дорогой, вот тебе пропуск» — и выдаёт в заголовках эту самую бумажку:

Access-Control-Allow-Origin: https://example.com

Короче, он решает вопросы между разными домами, чтобы один домен мог легально потырить данные у другого. Без него — сплошной пиздец и ошибки в консоли.

А второй страж — это CSP, он уже внутри клуба работает. Его волнует не «откуда пришёл», а «что этот пришедший гость с собой тащит». Он смотрит: «Опа, чувак, а это что у тебя? Скрипт с какого-то левого сервака? Нахуй! Стили с непонятного CDN? Нахуй!». Он контролирует, откуда страница может грузить всякую хуйню: скрипты, стили, картинки. И объявляет это вот так, как указ:

Content-Security-Policy: default-src 'self'; script-src 'unsafe-inline'

То есть, по умолчанию всё грузи только от себя, а скрипты можно из своих же файлов или, в крайнем случае, инлайновые, но это уже, блядь, 'unsafe-inline', на свой страх и риск.

Итог, чтобы не ебать мозг:

  • CORS — это про то, может ли внешний сайт спросить что-то у твоего сервера. Вопрос доверия между разными доменами.
  • CSP — это про то, что твоя страница может загружать и выполнять у себя. Вопрос безопасности от всяких встраиваемых пиздюлей и XSS-атак.

Вот и вся магия, ёпта. Один следит за границами, другой — за порядком внутри. А вместе они, блядь, как два мента в одной машине, создают видимость безопасности в этом диком вебе.