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

с моей точки зрения, технологии, называют совместное использование ресурсов перекрестного происхождения (CORS) и Политики Безопасности Контента (CSPs) кажутся очень похожими по цели и реализации.

оба, похоже, позволяют вам белый список источников ресурсов, которые бескомпромиссная версия вашей веб-страницы включает, через заголовки ответов HTTP. Единственное различие, которое я вижу, заключается в том, что CSPs кажутся более мелкозернистыми в том, что вы можете одобрить в своем ответ http.

4 ответов


CORS позволяет Та Же Политика Происхождения быть расслабленным для домена.

например, обычно, если пользователь входит в обе example.com и example.org, та же политика происхождения предотвращает example.com от создания запроса AJAX до example.org/current_user/full_user_details и получение доступа к ответу.

это политика по умолчанию в интернете и предотвращает утечку данных пользователя при входе на несколько сайтов одновременно.

теперь с CORS, example.org можно установить политика сказать, что это позволит origin https://example.com для чтения ответов, сделанных AJAX. Это было бы сделано, если бы оба example.com и example.org управляются той же компанией, и обмен данными между источниками должен быть разрешен в браузере пользователя. Это влияет только на стороне клиента, а не серверного.

CSPs, с другой стороны, устанавливают политику того, какой контент может работать на текущем сайте. Например, если JavaScript может быть выполнен встроенным или какие домены .js файлы могут быть загружены от. Это может быть полезно, чтобы действовать как еще одна линия обороны против С XSS атаки, где злоумышленник попытается внедрить скрипт на HTML-страницу. Обычно выход будет закодирован, однако говорят, что разработчик забыл только об одном поле вывода. Поскольку политика предотвращает выполнение встроенного скрипта, атака сорвана.


CORS позволяет сайту A давать разрешение сайту B читать (потенциально частные) данные с сайта A (используя браузер и учетные данные посетителя).

CSP позволяет сайту предотвращать от загрузки (потенциально вредоносного) контента из неожиданных источников (например, в качестве защиты от XSS).


ни один из ответов выше не дает четкого и краткого различия между CSP и CORS. Вот как я о них думаю:--1--> пусть мы имеем abc.com сайт, который хочет послать запрос def.net.

  1. при посещении пользователя abc.com в браузере, abc.com сервер возвращает abc.com HTTP response, ограничение CSP в этом ответе может предотвратить abc.com в браузере С просьбой о выдачи def.net
  2. если нет ограничений CSP в пределах abc.com HTTP response, тогда abc.com в браузере смогите отправить запрос в def.net
  3. по получении запроса, def.net сервер отвечаетdef.net HTTP response, ограничение CORS в этом ответе может предотвратить abc.com в браузере загрузка его

Так CSP защищает abc.com и CORS защищает def.net in пример выше.


CORS проверяет у третьей стороны разрешение на использование своих услуг. Таким образом, третья сторона предоставляет или отказывает в разрешении.

Так, например, если страница в www.example.com нужно сделать запрос к www.example.org нам нужно отправить запрос опций, отправленный www.example.org с Origin:www.example.com в качестве предвестника запроса разрешения. Теперь, www.example.org предоставляет или отказывает в авторизации.

CSP предотвращает непреднамеренную загрузку веб-страницы вредоносный контент от третьей стороны, указав, откуда может быть загружен определенный тип контента. Так, например, вы можете предоставить допустимый источник для каждого из следующих сценариев, css, media и т. д. используя директивы

пример:

Content-Security-Policy: По умолчанию-src 'none'; скрипт-src 'self' www.google-analytics.com ajax.googleapis.com; connect-src 'self'; img-src 'self'; style-src 'self';