Вызовы Edge AJAX терпят неудачу в домене с SSL, указывающим на localhost

У нас есть продукт, который основан на тонком клиенте, установленном на компьютере пользователя. Мы делаем ajax-запрос на получение домена, указывающего на локальный хост с реальным ssl. Это не работает в Edge, работает в любом другом браузере, включая IE11. Обратите внимание, что то же самое работает, если ssl не задействован. Он также работает в редакции Windows 10 Home.

Добавление типа данных, типа содержимого или метода запроса не решает эту проблему. Единственный способ исправить это, похоже, запустить следующую команду.

CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"

Если это ожидаемое поведение, может кто-нибудь объяснить, почему Microsoft блокирует это в корпоративной версии, но работает в домашней версии?


person Pit Digger    schedule 29.04.2017    source источник


Ответы (1)


Microsoft Edge и приложения для Windows 10 в целом используют изоляцию AppContainer:

Изолируя приложение от сетевых ресурсов помимо специально выделенных, AppContainer не позволяет приложению «вырваться» из своей среды и злонамеренно использовать сетевые ресурсы. Детальный доступ может быть предоставлен для доступа в Интернет, доступа к интрасети и работы в качестве сервера.

Ваш тонкий клиент работает на корпоративной границе win10 для службы intranet ssl (localhost), поэтому доступ по умолчанию ограничен этим механизмом. С командой

CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"

вы отключаете сетевую изоляцию на этом хосте для сетевого адаптера обратной связи (localhost) для MS Edge, чтобы ваш клиент приложения (и любое другое приложение с локальным источником) мог работать на нем без ограничений для какой-либо службы localhost.

Это не работает в Edge, работает в любом другом браузере, включая IE11.

Они явно хотели улучшить стандартную политику безопасности предыдущих версий. Никогда не поздно, MS :) На самом деле существует Расширенный защищенный режим (EPM), который также может помешать запуску вашего приложения в IE. В Chrome есть песочница Google Chrome, который также можно настроить таким образом. Safari и Firefox также имеют функции песочницы, хотя я не знаком с их особенностями.

Обратите внимание, что то же самое работает, если не используется ssl.

Как правило, если вы используете ssl, это связано с тем, что вы имеете дело с конфиденциальными данными и/или критически важной службой. Если нет, можно быть более расслабленным. Опять же, просто вопрос политики безопасности.

Он также работает в версии Windows 10 Домашняя. Если это ожидаемое поведение, может кто-нибудь объяснить, почему Microsoft блокирует это в корпоративной версии, но работает в домашней версии?

Корпоративные версии любого продукта, как известно, имеют более строгие ограничения, поскольку их целевые пользователи в большей степени обеспокоены безопасностью (ИТ-специалисты обычно не хотят подвергать внутреннюю службу базы данных заработной платы своей компании внешним злоумышленникам и тому подобное). Кроме того, в этом случае поведение по умолчанию может быть легко определено/изменено экспертами ИТ-отдела (ознакомьтесь с политики безопасности домена), поэтому лучше оставить настройки по умолчанию в «параноидальном» режиме и позволить экспертам настроить их в соответствии с потребностями компании.

Обратите внимание, что при запуске тонкого клиента в браузере действуют другие механизмы, которые делают этот вид защиты избыточным (та же политика домена, защита от XSS и т. д.). Тем не менее никогда нельзя быть в полной безопасности: есть способы обойти эти средства защиты, такие как Self-XSS, которые требуют изоляции между браузером и локальной сетью, чтобы избежать компрометации системы. В конце концов, менее открытая поверхность означает меньше векторов атаки, поэтому изоляция хороша, если вы можете себе это позволить :)

person NotGaeL    schedule 06.05.2017
comment
ценю ваш ответ. Можете ли вы подумать о том, чтобы проверить, включен ли у пользователя LoopbackExempt? Это главный блокпост. Любая идея, может ли Microsoft открыть это в будущем? - person Pit Digger; 09.05.2017
comment
Спасибо. Я не думаю, что у вашего клиента есть прямой способ запросить это. Моей первой идеей было бы всплывающее предупреждение, если клиент может подключиться, пожалуйста, проверьте, работает ли локальный сервер и включен ли LoopbackExempt или что-то в этом роде. В качестве альтернативы можно было бы проверить, отсутствует ли типичная локальная служба Windows (например, samba, но ssl), и в этом случае перейти к выводу, что клиенту заблокирован доступ к локальным службам. Я не думаю, что MS откроет это в будущем. Тенденция к более безопасным, более ограничительным. Даже дома они хотят пользователей на Windows 10 S... - person NotGaeL; 10.05.2017
comment
В любом случае, как я уже сказал, перед развертыванием этого приложения в любой компании я бы просто предупредил ИТ-отдел, чтобы было установлено это правило домена LoopbackExempt, чтобы каждый компьютер с Windows10 Pro в домене компании запускал приложение без проблем. Я был бы очень удивлен, если бы нашел компанию со слишком строгой политикой безопасности, чтобы позволить такое... - person NotGaeL; 10.05.2017