В чем разница между CORS и CSP?
DOM и браузер
CORS и CSP — оба механизма безопасности через HTTP-заголовки, но решают разные задачи: CORS управляет кросс-доменными запросами (чтением ответов), а CSP — источниками загружаемых ресурсов (защита от XSS).
CORS (Cross-Origin Resource Sharing)
Управляет тем, каким origin разрешено читать ответы кросс-доменных запросов. Защищает пользователя от кражи данных через его сессию (Same-Origin Policy).
Access-Control-Allow-Origin: https://app.comВопрос CORS: «может ли сайт A читать ответ от сервера B?»
CSP (Content-Security-Policy)
Указывает браузеру, из каких источников загружать ресурсы (скрипты, стили, изображения). Защищает прежде всего от XSS — блокирует выполнение внедрённых/сторонних скриптов.
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.comВопрос CSP: «откуда можно грузить и выполнять ресурсы на этой странице?»
Различия
- Задача: CORS — контроль кросс-доменных запросов; CSP — контроль источников ресурсов.
- От чего защищает: CORS — от чтения чужих данных; CSP — от XSS и инъекций.
- Направление: CORS — про исходящие запросы к другим origin; CSP — про загрузку ресурсов на текущую страницу.
Общее
Оба — заголовки безопасности, оба контролирует браузер, дополняют друг друга.
Коротко для собеседования
CORS управляет тем, каким origin можно читать ответы кросс-доменных запросов (защита от кражи данных через сессию). CSP ограничивает источники загружаемых ресурсов (защита от XSS). CORS — про кросс-доменные запросы, CSP — про источники ресурсов страницы. Оба — заголовки безопасности, дополняют друг друга.