2016-09-14 11 views
21

С моей точки зрения, технологии, называемые Перекрестный источник ресурсов (CORS) и Политики безопасности контента (CSP), по-видимому, очень схожи по назначению и реализации.В чем разница между CORS и CSP?

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

ответ

29

CORS разрешает Same Origin Policy расслабляться для домена.

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

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

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

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

+0

Благодарим за очень полезный ответ (я поддержал, но мой представитель должен быть низким, чтобы он мог рассчитывать). Единственная часть, которую я не мог полностью выполнить, - «Обычно вывод будет закодирован». Возможно, это помогло бы другим, если бы вы могли это немного разъяснить? – nickform

+0

Несомненно. Я связался с другим ответом, чтобы объяснить этот бит. Пожалуйста, дайте мне знать, если вам нужны дополнительные разъяснения. – SilverlightFox

+0

Да, спасибо - теперь я следую. – nickform

16

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

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

1

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

Так, например, если на странице www.example.com необходимо сделать запрос на www.example.org, нам необходимо отправить запрос OPTIONS, отправленный на сайт www.example.org, с Origin: www.example.com as предшественник для запроса разрешения. Теперь www.example.org предоставляет или отклоняет авторизацию.

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

Пример:

Content-Security-Policy: по умолчанию-Src «ни»; script-src 'self' www.google-analytics.com ajax.googleapis.ком; connect-src 'self'; img-src 'self'; style-src 'self';

 Смежные вопросы

  • Нет связанных вопросов^_^