События
19 нояб., 23 - 21 нояб., 23
Присоединяйтесь к онлайн-сеансам в Microsoft Ignite, созданным для расширения ваших навыков и помогая решить современные сложные проблемы.
ЗарегистрироватьсяЭтот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
Примечание
Это не последняя версия этой статьи. В текущем выпуске см . версию .NET 9 этой статьи.
Предупреждение
Эта версия ASP.NET Core больше не поддерживается. Дополнительные сведения см. в политике поддержки .NET и .NET Core. В текущем выпуске см . версию .NET 9 этой статьи.
Важно!
Эта информация относится к предварительному выпуску продукта, который может быть существенно изменен до его коммерческого выпуска. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
В текущем выпуске см . версию .NET 9 этой статьи.
В этой статье рассматриваются вопросы безопасности для приложений Blazor Hybrid.
Приложения Blazor Hybrid, которые отрисовывают веб-содержимое, выполняют код .NET внутри платформы Web View. Этот код .NET взаимодействует с веб-содержимым через канал взаимодействия между кодом .NET и Web View.
Веб-содержимое, которое отрисовывается в Web View, может поступать из предоставляемых приложением ресурсов, расположенных в любом из следующих мест:
wwwroot
в приложении;Существует граница доверия между кодом .NET и кодом, который выполняется внутри Web View. Код .NET предоставляется приложением и любыми доверенными сторонними пакетами, которые вы устанавливаете для него. После компиляции приложения .NET не могут измениться источники содержимого для кода Web View.
В отличие от источников содержимого для кода .NET, для кода внутри Web View источники содержимого могут поступать не только из приложения, но и из внешних источников. Например, Web View приложения может использовать или отрисовывать статические ресурсы из внешней сети доставки содержимого (CDN).
Код внутри Web View следует считать ненадежным, аналогично коду, который выполняется в браузере для веб-приложения. К ненадежным ресурсам в приложениях Blazor Hybrid применяются те же угрозы и общие рекомендации по безопасности, что и в других типах приложений.
По возможности избегайте загрузки содержимого из стороннего источника. Чтобы снизить риск, вы можете обслуживать содержимое непосредственно из приложения, скачав внешние ресурсы, убедившись, что они безопасны для обслуживания пользователей и помещают их в папку приложения wwwroot
для упаковки с rest приложением. При скачивании внешнего содержимого для включения в приложение проверьте его на наличие вирусов и вредоносных программ, прежде чем помещать содержимое в папку wwwroot
приложения.
Если приложение должно ссылаться на содержимое из внешнего источника, мы рекомендуем использовать стандартные подходы к обеспечению веб-безопасности и предоставить приложению возможность заблокировать загрузку скомпрометированного содержимого.
Даже если все ресурсы упакованы в приложение и не загружаются из внешних источников, не забывайте о возможных проблемах в коде ресурсов, которые выполняются внутри Web View, так как эти ресурсы могут иметь уязвимости, разрешающие атаки межсайтовых сценариев (XSS).
Как правило, платформа Blazor успешно защищает от XSS благодаря безопасным методам работы с HTML. Но некоторые шаблоны программирования позволяют компонентам Razor внедрять необработанный HTML-код в отображаемые выходные данные, например при отображении содержимого из недоверенного источника. Например, избегайте отображения любого содержимого в формате HTML из базы данных без дополнительной проверки. Кроме того, используемые приложением библиотеки JavaScript могут небезопасно обрабатывать содержимое в формате HTML или намеренно отображать небезопасные выходные данные.
По этим причинам мы рекомендует применять все те же методы защиты от XSS, которые рекомендуются для веб-приложений. Запретите загрузку скриптов из неизвестных источников и не внедряйте потенциально небезопасные функции JavaScript, например eval
и другие небезопасные примитивы JavaScript. Мы рекомендуем создать политику безопасности содержимого, чтобы снизить эти риски безопасности.
Если код внутри Web View будет скомпрометирован, он получит ко всему содержимому внутри Web View и сможет взаимодействовать с узлом через канал взаимодействия. По этой причине любое содержимое, поступающее из Web View (события или взаимодействия с JS), должно считаться ненадежным и проверяться так же, как и в других контекстах работы с конфиденциальными данными, например в скомпрометированном приложении Blazor Server, которое может привести к вредоносным атакам на хост-систему.
Не сохраняйте конфиденциальную информацию, например учетные данные, маркеры безопасности или конфиденциальные пользовательские данные в контексте Web View, так как она делает информацию доступной для кибератаки, если она Web View скомпрометирована. Существуют более безопасные альтернативы, как например обработка конфиденциальной информации во внутренней части приложения.
При использовании iframe
для отображения внешнего содержимого на странице Blazor Hybrid рекомендуется использовать функции песочницы, чтобы изолировать содержимое от родительской страницы с основным приложением. В следующем Razor примере компонента атрибут присутствует для тега<iframe>
, sandbox
чтобы применить к странице функции admin.html
песочницы:
<iframe sandbox src="https://contoso.com/admin.html" />
Предупреждение
Атрибут sandbox
не поддерживается в ранних версиях браузера. Дополнительные сведения см. на странице Можно ли использовать sandbox
.
Ссылки на URL-адреса за пределами приложения открываются в соответствующем внешнем приложении, а не загружаются в пределах Web Viewприложения. Мы не рекомендуем переопределить поведение по умолчанию.
Элемент BlazorWebView управления использует установленный в данный момент собственный код Web Viewдля конкретной платформы. Так как собственный объект Web View периодически обновляется для поддержки новых API и исправления проблем с безопасностью, может потребоваться убедиться в том, что приложение использует ту версию Web View, которая соответствует требованиям приложения.
Используйте один из следующих подходов, чтобы обеспечить актуальность Web View в развернутых приложениях:
Web View для Android распространяется и обновляется через Магазин Google Play. Проверьте версию Web View, прочитав строку User-Agent
. Прочитайте у Web View свойство navigator.userAgent
с помощью взаимодействия JavaScript и при необходимости кэшируйте значение с помощью одноэлементной службы, если строка агента пользователя требуется за пределами контекста компонента Razor.
При использовании эмулятора Android:
iOS и Mac Catalyst используют WKWebView
, элемент управления на основе Safari, который обновляется операционной системой. Как и в случае Android, определите версию Web View, прочитав у Web View строку User-Agent
.
В Windows для запуска веб-приложений Blazor требуется Microsoft Edge WebView2
на основе Chromium.
Используется последняя установленная версия WebView2
, известная как и Evergreen distributionиспользуемая. Если вы хотите передать с приложением определенную версию WebView2
, используйте Fixed Version distribution.
Дополнительные сведения о проверке текущей установленной версии WebView2
и режимах дистрибуции см. в документации по распространению WebView2
.
Отзыв о ASP.NET Core
ASP.NET Core — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
События
19 нояб., 23 - 21 нояб., 23
Присоединяйтесь к онлайн-сеансам в Microsoft Ignite, созданным для расширения ваших навыков и помогая решить современные сложные проблемы.
Зарегистрироваться