В контексте CORS можно ли заставить браузер всегда отправлять заголовок Origin с полным доменным именем? Целевая служба должна видеть Origin: http://website.intranet.example.com/page.html
вместо Origin: http://website/page.html
.Браузер не отправляет FQDN в заголовке Origin
Как видно из примера, это среда интрасети, и цель состоит в том, чтобы отфильтровать исходные запросы по субдомену, чтобы разрешить любую страницу, размещенную на машине домена (*.intranet.example.com
), чтобы сделать запросы перекрестного происхождения службе, которая также размещена в тот же домен. Проблема (если хотите) заключается в том, что сайты интрасети обычно адресуются как http://website/
, а остальная часть подразумевается суффиксом DNS для подключения: intranet.example.com
, установленным с помощью политики домена.
Единственный способ решения проблемы я могу думать о том, чтобы требовать, чтобы все страницы «происхождения», чтобы заставить канонические URL (т.е. перенаправлять //foo
к //foo.intranet.example.com
) с наименьшим побочным эффектом «некрасивых URL-адресов».
Проблема в том, что 'Origin: http: // server1 /' является неоднозначным. Запрос может быть легитимным на странице «server1.intranet.example.com» или «server1» может быть вредоносной машиной в какой-либо локальной сети; это применяется, когда пользователь домена удален и использует VPN или DirectAccess для доступа к интрасети. – Serguei
Это может быть справедливо в отношении любого HTTP-запроса, хотя похоже, что вы хотите определить легитимность запроса на основе значения заголовка Origin, но это не очень хороший способ определить вредоносные запросы - вы можете сделать HTTP-запросы с любыми значениями, установленными в их. Возможно, вы можете добавить дополнительную проверку входящих IP-адресов в белый список? Или добавить некоторую http-авторизацию или предположить, что, если вы можете определить, что запрос поступает через VPN, что он уже должен быть разрешен? - это может зависеть, если это закрытая или открытая интрасеть. – user3417917
Пользователь переходит к 'http: // evil-comp/page.html' (сервер без домена), который вызывает вызовы AJAX на' http: // payroll.intranet.example.com/конфиденциальный', а затем пересылает эти данные в другом месте. Правильная политика CORS предотвратит появление «http: // evil-comp/page.html» содержимого содержимого ответа. – Serguei