Поделиться через


начало работы с ASP.NET Web Forms

Модель веб-формы и способы создания страниц и использования элементов управления.

Почему внешние ресурсы на моей странице блокируются в web Live Preview?

Если у вас есть внешние ресурсы из стороннего домена, которые находятся на вашей странице, вы можете заметить, что конструктор в Веб-live Preview не позволил их загрузке и отображает это всплывающее уведомление:

Всплывающее уведомление о заблокированных ресурсах

Вам может быть интересно, почему ресурсы заблокированы для загрузки в конструкторе и почему отображается всплывающее уведомление. В этой статье объясняется, почему ресурсы заблокированы.

Web Live Preview (WLP) — это расширение Visual Studio, созданное на основе BrowserLink. WLP использует BrowserLink для предоставления канала для двустороннего взаимодействия между Visual Studio и конструктором. Это двустороннее взаимодействие позволяет WLP предоставлять множество функций:

  • Синхронизация содержимого и выбранного в данный момент узла в конструкторе с содержимым редактора.
  • Отправка нового содержимого, созданного из конструктора, в редактор.
  • Выполнение команд панели действий.

Если вы внедряете на веб-страницу какие-либо скрипты или ресурсы от стороннего производителя, это может привести к потенциальной уязвимости системы безопасности с помощью WLP и BrowserLink для атаки межсайтовых сценариев (XSS).

Если сторонний ресурс может внедрить вредоносный код на сайт, он может использовать скрипт ссылки браузера, внедренный в конструктор, для обратного вызова Visual Studio. Внедренный скрипт может позволить коду записывать произвольное содержимое в файлы, открытые в Visual Studio, или открывать другие векторы атак.

В настоящее время нет хорошего способа запретить злоумышленникам обмен данными с помощью скрипта BrowserLink обратно в Visual Studio.

Устранение уязвимостей системы безопасности

Насколько это возможно, мы ограничили и смягчили уязвимости системы безопасности при обмене данными с помощью скрипта BrowserLink обратно в Visual Studio. Однако некоторые атаки по-прежнему можно сделать возможными с помощью атаки XSS.

Чтобы снизить вероятность такой XSS-атаки, по умолчанию WLP блокирует загрузку всех внешних ресурсов. Если какой-либо внешний ресурс заблокирован, WLP отображает следующее всплывающее уведомление в правом верхнем углу конструктора:

Всплывающее уведомление о заблокированных ресурсах

(В этом примере мы используем следующий SVG, который является внешним ресурсом, используемым в примере веб-приложения: ) https://visualstudio.microsoft.com/wp-content/uploads/2021/10/Product-Icon.svg

Если окно Средства разработки Microsoft Edge открыто, вы также можете заметить следующее сообщение, объясняющее, почему не удалось загрузить внешний ресурс:

Средства разработчика сообщений о заблокированных ресурсах

Если щелкнуть ссылку , во всплывающем окне конструктора откроется следующее диалоговое окно с доменами заблокированных ресурсов, автоматически добавленными в список диалогового окна:

Разрешить домены

Все ресурсы, поступающие из внешних доменов, хранящиеся в списке диалогового окна, не будут блокироваться по умолчанию в WLP и загружаются обычным образом. После нажатия кнопки ОК конструктор перезагрузит страницу и загрузит все ранее заблокированные ресурсы, домены которых были добавлены в диалоговое окно. Убедитесь, что вы разрешаете только внешние домены, которые вы проверили, чтобы быть надежными и безопасными.

Если щелкнуть ссылку Web Live Preview — внешние домены во всплывающем окне, откроется то же диалоговое окно, но в диалоговом окне не будут добавлены домены заблокированных ресурсов:

Разрешить домены без добавления

Вы также можете получить доступ к диалогу Tools -> Options -> Web Live Preview -> Allowed external domains during design с помощью параметра . Параметры диалогового окна доступны для каждого установленного экземпляра Visual Studio.

Параметры инструментов Заблокированные ресурсы

Предупреждение

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