Partager via


Considérations relatives à la sécurité Blazor Hybrid ASP.NET Core

Remarque

Ceci n’est pas la dernière version de cet article. Pour la version actuelle, consultez la version .NET 9 de cet article.

Avertissement

Cette version d’ASP.NET Core n’est plus prise en charge. Pour plus d’informations, consultez la stratégie de support .NET et .NET Core. Pour la version actuelle, consultez la version .NET 9 de cet article.

Important

Ces informations portent sur la préversion du produit, qui est susceptible d’être en grande partie modifié avant sa commercialisation. Microsoft n’offre aucune garantie, expresse ou implicite, concernant les informations fournies ici.

Pour la version actuelle, consultez la version .NET 9 de cet article.

Cet article décrit les considérations relatives à la sécurité pour les applications Blazor Hybrid.

Les applications Blazor Hybrid qui affichent du contenu web exécutent du code .NET à l’intérieur d’une plateforme Web View. Le code .NET interagit avec le contenu web via un canal d’interopérabilité entre le code .NET et le Web View.

Le code WebView et .NET fonctionnent en interaction au sein de l’application pour afficher le contenu web.

Le contenu web rendu dans le Web View peut provenir des ressources fournies par l’application à partir de l’un des emplacements suivants :

  • Le dossier wwwroot dans l’application.
  • Une source externe à l’application. Par exemple, une source réseau, telle qu’Internet.

Une limite d’approbation existe entre le code .NET et le code qui s’exécute à l’intérieur du Web View. Le code .NET est fourni par l’application et tous les packages tiers approuvés que vous avez installés. Une fois l’application générée, les sources de contenu du code Web View .NET ne peuvent pas changer.

Contrairement aux sources de code .NET du contenu, les sources de contenu du code qui s’exécute à l’intérieur de Web View peuvent provenir non seulement de l’application, mais également de sources externes. Par exemple, les ressources statiques d’un réseau de distribution de contenu (CDN) externe peuvent être utilisées ou affichées par l’application Web View.

Considérez le code à l’intérieur du Web View comme non fiable de la même manière que le code s’exécutant à l’intérieur du navigateur pour une application web n’est pas fiable. Les mêmes menaces et recommandations générales en matière de sécurité s’appliquent aux ressources non fiables dans les applications Blazor Hybrid que pour les autres types d’applications.

Si possible, évitez de charger du contenu à partir d’une origine tierce. Pour atténuer les risques, vous pouvez mettre du contenu à disposition directement à partir de l’application en téléchargeant les ressources externes, en vérifiant qu’elles sont sécurisées pour les utilisateurs et en les plaçant dans le dossier wwwroot de l’application pour qu’elles soient intégrées au rest de l’application. Lorsque le contenu externe est téléchargé pour l’inclure dans l’application, nous vous recommandons de l’analyser à la recherche de virus et de programmes malveillants avant de le placer dans le dossier wwwroot de l’application.

Si votre application doit référencer du contenu provenant d’une origine externe, nous vous recommandons d’utiliser des approches de sécurité web courantes pour permettre à l’application d’empêcher le chargement du contenu si le contenu est compromis :

Même si toutes les ressources sont intégrées à l’application et ne se chargent pas à partir d’une origine externe, restez prudent quant aux problèmes dans le code des ressources qui s’exécutent à l’intérieur du Web View, car les ressources peuvent présenter des vulnérabilités qui pourraient entraîner des attaques par scripting inter-site (XSS).

En général, l’infrastructure Blazor protège contre le XSS en traitant du code HTML de manière sécurisée. Toutefois, certains modèles de programmation permettent aux composants Razor d’injecter du code HTML brut dans une sortie affichée, comme le rendu du contenu à partir d’une source non fiable. Par exemple, le rendu du contenu HTML directement à partir d’une base de données doit être évité. En outre, les bibliothèques JavaScript utilisées par l’application peuvent manipuler le code HTML de manière non sécurisée pour afficher par inadvertance ou délibérément une sortie non sécurisée.

Pour ces raisons, il est préférable d’appliquer les mêmes protections contre le XSS que celles normalement appliquées aux applications web. Empêchez le chargement de scripts à partir de sources inconnues et n’implémentez pas de fonctionnalités JavaScript potentiellement non sécurisées, telles que eval et d’autres primitives JavaScript non sécurisées. Il est recommandé d’établir un fournisseur de solutions pour réduire ces risques de sécurité.

Si le code à l’intérieur du Web View est compromis, le code accède à tout le contenu à l’intérieur du Web View et peut interagir avec l’hôte via le canal d’interopérabilité. Pour cette raison, tout contenu provenant du Web View (événements, interopérabilité JS) doit être traité comme non fiable et validé de la même manière que pour d’autres contextes sensibles, comme dans une application compromise Blazor Server qui peut entraîner des attaques malveillantes sur le système hôte.

Ne stockez pas d’informations sensibles, telles que des informations d’identification, des jetons de sécurité ou des données utilisateur sensibles dans le contexte de la Web View, car ces informations seraient alors accessibles à un attaquant si la Web View est compromise. Il existe des alternatives plus sûres, telles que la gestion des informations sensibles directement dans la partie native de l’application.

Contenu externe affiché dans un iframe

Lors de l’utilisation d’un iframe pour afficher du contenu externe dans une page Blazor Hybrid, nous recommandons aux utilisateurs de tirer parti des fonctionnalités de bac à sable (sandboxing) pour s’assurer que le contenu est isolé de la page parente contenant l’application. Dans l’exemple de composant Razor suivant, sandboxl’attribut est présent pour la balise <iframe> pour appliquer des fonctionnalités de bac à sable à la page admin.html :

<iframe sandbox src="https://contoso.com/admin.html" />

Avertissement

L’attribut sandbox n’est pas pris en charge par les anciennes versions des navigateurs. Pour plus d’informations, consultez Puis-je utiliser : sandbox.

Les liens vers des URL en dehors de l’application sont ouverts dans une application externe appropriée, et ne sont pas chargés dans Web View. Nous vous déconseillons de modifier le comportement par défaut.

Conservez le Web View actuel dans les applications déployées

Le contrôle BlazorWebView utilise le Web View natif spécifique à la plateforme actuellement installé. Étant donné que le natif Web View est régulièrement mis à jour avec la prise en charge des nouvelles API et des correctifs pour les problèmes de sécurité, il peut être nécessaire de s’assurer qu’une application utilise une version Web View qui répond aux exigences de l’application.

Utilisez l’une des approches suivantes pour conserver le Web View actuel dans les applications déployées :

  • Sur toutes les plateformes : vérifiez la version Web View et invitez l’utilisateur à prendre toutes les mesures nécessaires pour la mettre à jour.
  • Uniquement sur Windows : intégrez une version Web View fixe dans l’application, en l’utilisant à la place du système partagé Web View.

Android

Android Web View est distribué et mis à jour via le Google Play Store. Vérifiez la version Web View en lisant la chaîne User-Agent. Lisez la propriété de navigator.userAgent du Web View à l’aide de l’interopérabilité JavaScript et mettez éventuellement la valeur en cache à l’aide d’un service singleton si la chaîne de l’agent utilisateur est requise en dehors d’un contexte de composant Razor.

Lors de l’utilisation de l’Émulateur Android :

  • Utilisez un appareil émulé avec Google Play Services préinstallé. Les appareils émulés sur lesquels Google Play Services n’est pas préinstallé ne sont pas pris en charge.
  • Installez Google Chrome à partir du Google Play Store. Si Google Chrome est déjà installé, mettez à jour Chrome à partir du Google Play Store. Si un appareil émulé n’a pas la dernière version de Chrome installée, il se peut qu’il n’ait pas la dernière version d’Android Web View installée.

iOS/Mac Catalyst

iOS et Mac Catalyst utilisent tous deux WKWebView, un contrôle basé sur Safari, qui est mis à jour par le système d’exploitation. Comme dans le cas Android, déterminez la version Web View en lisant la chaîne User-Agent de Web View.

Windows (.NET MAUI, WPF, Windows Forms)

Sur Windows, Microsoft Edge WebView2 basé sur Chromium est requis pour exécuter des applications web Blazor.

La dernière version installée de WebView2, connue sous le nom d’Evergreen distribution, est utilisée. Si vous souhaitez expédier une version spécifique de WebView2 avec l’application, utilisez Fixed Version distribution.

Pour plus d’informations sur la vérification de la version WebView2 actuellement installée et des modes de distribution, consultez la WebView2documentation de distribution.

Ressources supplémentaires