Aspnetcore: Envisagez de modifier les URL des assemblys .NET pour qu'ils ne se terminent pas par .dll

Créé le 27 févr. 2018  ·  104Commentaires  ·  Source: dotnet/aspnetcore

Je voulais voir la démo sur https://blazor-demo.github.io/ et mon pare-feu d'entreprise a bloqué MicroApp.dll , tandis que d'autres dll ont été téléchargées avec succès. Étant donné que de nombreux logiciels sont paranoïaques à l'idée de télécharger/transférer des fichiers binaires Windows, peut-être vaut-il la peine de les obscurcir un peu ? Ou, au moins, renommer?

Components Big Rock area-blazor blazor-wasm enhancement

Commentaire le plus utile

Que diriez-vous YourAssembly.blazor ? Cela pourrait être une bonne façon de promouvoir le projet (très très légèrement) si des développeurs Web regardent dans les outils de développement pour voir comment le site a été construit ? Ou peut-être que c'est juste moi qui remarque parfois qu'un site a été construit avec Vue.js ou autre et pense "oh, sympa" :)

Tous les 104 commentaires

C'est intéressant - merci de nous l'avoir fait savoir. Nous allons envisager de changer les URL en YourAssembly_dll ou quelque chose comme ça, bien que nous le fassions par défaut dépendra si nous recevons plus de rapports à ce sujet, et si nous pouvons établir que c'est dû au nom ou plus profondément inspection du contenu de la charge utile.

@SteveSandersonMS juste pour déposer mon 2c ici. Il n'y a pas que les pare-feux d'entreprise qui souffrent du .dll-fobia . Certains antivirus locaux ont également ce même problème.

@galvesribeiro a raison de ne pas mentionner que si je n'étais pas au courant de ce qui se passe et que je voyais un site Web essayant de télécharger une DLL, je serais parti ! Tenez compte de la perception lorsque vous abordez cela :)

@joeizy ouais, je suis tout à fait d'accord avec vous que dans la majorité des cas, bloquer les dll est la bonne chose à faire. C'est pourquoi nous parlons de le renommer car nous sommes sûrs de ce que nous faisons...

Que diriez-vous YourAssembly.blazor ? Cela pourrait être une bonne façon de promouvoir le projet (très très légèrement) si des développeurs Web regardent dans les outils de développement pour voir comment le site a été construit ? Ou peut-être que c'est juste moi qui remarque parfois qu'un site a été construit avec Vue.js ou autre et pense "oh, sympa" :)

Que diriez-vous simplement de .bin ?

J'aime aussi .bin ou .blazor.

+1 ".bin"

.lib ou .bin ou .ilasm ?

Afin que nous puissions prendre une décision éclairée à ce sujet, cela aiderait vraiment si nous avions des étapes de reproduction approximatives (ou au moins un indice dans cette direction). Nous devons comprendre spécifiquement s'il s'agit d'un problème de nommage ou d'un problème de contenu, par exemple.

Quel produit de pare-feu spécifique est connu pour bloquer .dll , soit par défaut, soit dans une configuration courante ? Pouvez-vous m'indiquer quelque chose que je peux installer et essayer ? Ou sinon, en avez-vous au moins le nom, et peut-être des liens vers l'un de ses documents de configuration ?

@SteveSandersonMS Je pense que ce n'est pas un produit particulier. Plusieurs produits, en particulier ceux très utilisés par les entreprises, ont des paramètres de configuration de marée sur les types de fichiers, en particulier les plus courants tels que .exe, .dll, .so, etc.

Le nom lui-même est le premier bloqueur mais, une façon de _réduire_ ce problème, c'est de la même manière que nous traitons ClickOnce depuis .Net 2.0. Signer des assemblées.

Le problème est que (1) ce n'est pas bon marché, (2) le processus pour gagner ces certificats même si vous pouvez vous le permettre est TRÈS complexe et même pas disponible dans certains pays et même si vous l'obtenez, (3) le certificat pour la société/le développeur prend généralement un certain temps pour être _confiance_ par la base de données du logiciel antivirus.

Pour les assemblys publiés par MSFT, ce n'est pas une grande nouvelle car nous savons que chaque assembly livré, même ceux OSSed, est signé par code par la politique corpnet. Mais pensez aux autres développeurs, startups et projets OSS. Ils en souffriront tous.

Je me souviens que dans le bon vieux temps où Silverlight était une chose, si nous voulions télécharger des assemblages à la demande, nous les mettions dans un fichier xap (qui en pratique est un fichier zip) puis les extrayions avec
https://msdn.microsoft.com/en-us/library/cc190632 (v=vs.95).aspx

Je ne sais pas s'il y avait une raison à cela (autre que la combinaison de plusieurs dll dans un seul fichier). Je suppose que l'équipe Silverlight devrait être familiarisée avec les problèmes de pare-feu s'il y en a.

Le problème avec le regroupement est que si vous devez mettre à jour 1 de ces dll, l'ensemble du package doit être mis à jour... Pas de cache ou de bande passante le modèle Silverlight...

Je ne suggère pas d'utiliser le regroupement pour Blazor. Je dis simplement qu'en dehors de la fonctionnalité de regroupement, peut-être que l'équipe Silverlight utilisait des fichiers xap pour éviter les problèmes de pare-feu. Ce n'est qu'une supposition, bien sûr.

Conservez ".net" comme extension

Nous sommes bien dans le domaine du bikeshedding à ce sujet maintenant. Par conséquent, je demande spécifiquement des exemples concrets de produits de pare-feu réels qui ont des problèmes avec cela.

Je pense que ce n'est pas un produit particulier

Néanmoins, des exemples de produits particuliers, et dans quelles configurations cela se produit, seraient utiles.

@SteveSandersonMS J'ai compris cette partie. Le fait est que résoudre le problème pour 1 antivirus/pare-feu particulier ne couvrira pas tous les autres car nous savons tous que chacun a sa propre heuristique, base de données, paramètres pour cela. Le seul cas qui pourrait couvrir à la fois les règles de nommage et de signature pour tout, est :

  1. Signer les assemblées comme d'habitude et ;
  2. Assurez-vous que le nom n'est pas dans la liste noire _default_

@SteveSandersonMS J'ai rencontré quelques problèmes lors de l'utilisation de NOD32 d'ESET et j'ai vu le bloc de scanner actif télécharger certains fichiers binaires en silence, ceux-ci semblent à première vue être des bibliothèques de liens dynamiques qui n'ont pas de signature numérique.

Merci pour l'info @grahamehorner. Savez-vous à peu près quelles seraient les étapes de reproduction ? Si je viens d'installer NOD32 sur une machine Windows (jetable), est-ce suffisant pour l'empêcher d'ouvrir https://blazor-demo.github.io/? Ou une configuration supplémentaire est-elle nécessaire ?

Depuis https://www.paloaltonetworks.com/documentation/80/pan-os/pan-os/threat-prevention/set-up-file-blocking :

Les profils de blocage de fichiers vous permettent d'identifier les types de fichiers spécifiques que vous souhaitez bloquer ou surveiller. Pour la plupart du trafic (y compris le trafic sur votre réseau interne), vous souhaiterez bloquer les fichiers connus pour contenir des menaces ou qui n'ont aucun cas d'utilisation réel pour le téléchargement/téléchargement. Actuellement, ceux-ci incluent les fichiers batch, les DLL, les fichiers de classe Java, les fichiers d'aide, les raccourcis Windows (.lnk) et les fichiers BitTorrent.

@SteveSandersonMS J'attends une réunion avec notre équipe d'administration informatique qui gère à distance NOD32 et sa configuration pour savoir ce qu'ils ont (le cas échéant) modifié/personnalisé, car j'ai également reçu un e-mail automatisé de notre système NOD32 indiquant que je ont pu violer la politique de sécurité de l'entreprise en téléchargeant/installant des logiciels non fiables. Je posterai au fur et à mesure que je le saurai ou que j'aurai des informations supplémentaires.

Je me demande si les .dlls pourraient/seraient bloqués s'ils étaient emballés dans un .nupkg et décompressés/chargés par blazor après le téléchargement ?

Actuellement, ceux-ci incluent les fichiers batch, les DLL, les fichiers de classe Java, les fichiers d'aide, les raccourcis Windows (.lnk) et les fichiers BitTorrent.

C'est ce que je dis... Quel que soit le produit, il s'agit de la liste _par défaut_ des types de fichiers qui seraient bloqués par tout administrateur informatique dans une entreprise ordinaire (généralement non basée sur l'informatique)...

BTW, s'il y a quelqu'un de l'équipe WPF qui a travaillé avec .xap, ils peuvent clairement dire à n'importe qui ce à quoi ils ont été confrontés lorsqu'ils ont publié "WPF dans un navigateur" à l'époque et ont rencontré _exactement_ le même problème.

Il a fallu un certain temps avant que _tous_ les logiciels antivirus commencent à _faire confiance_ à cette extension.

J'ai eu le même problème. Testé l'échantillon à l'intérieur d'un réseau d'entreprise. Un fichier DLL a été signalé comme étant bloqué. Cela rend pratiquement impossible la démonstration à un collègue. Obtenir le déblocage des fichiers DLL est probablement un non-démarrage.

En regardant la page officielle des conventions...
http://webassembly.github.io/spec/core/binary/conventions.html

L'extension recommandée pour les fichiers contenant des modules WebAssembly au format binaire est ".wasm" et le type de support recommandé est "application/wasm".

Il semblerait donc que la première chose à faire soit de renommer les fichiers en .wasm, et s'ils sont toujours bloqués, le pare-feu doit être débloqué.

Je ne pense pas que renommer les fichiers en .wasm soit une bonne idée. Les DLL ne sont pas des modules Wasm, ce sont des assemblages .NET qui sont (actuellement) interprétés par le runtime Mono Wasm ( en savoir plus ). Seul le runtime Mono est un module Wasm. Cependant, je vote également pour renommer les DLL en autre chose à cause des pare-feu, en particulier dans les scénarios d'entreprise.

La version 18.1.3044 de l'antivirus AVG a également bloqué les fichiers DLL lorsque j'ai essayé de visiter https://blazor-realworld.azurewebsites.net/

Je ne pense pas que renommer les fichiers en .wasm soit une bonne idée. Les DLL ne sont pas des modules Wasm, ce sont des assemblages .NET qui sont (actuellement) interprétés par le runtime Mono Wasm (en savoir plus). Seul le runtime Mono est un module Wasm.

Le problème est de savoir ce que serait cette extension "quelque chose d'autre" car aucune des extensions existantes ne s'applique (les charges utiles .NET MSIL interprétées directement dans le bac à sable du navigateur sont un tout nouveau concept de sécurité) alors que wasm est déjà autorisé par le pare-feu de l'entreprise.

La gestion de .xap peut ne pas être une bonne référence du point de vue de la sécurité car elle contourne le bac à sable de sécurité du navigateur contrairement à wasm.

Oui, les fichiers DLL contiennent du MSIL, il est donc techniquement vrai qu'ils ne sont pas strictement binaires. Mais ils sont nommés DLL parce qu'ils sont nommés d'après les DLL Win32 natives, même s'ils ne partagent qu'un fragment du format PE et sont pour la plupart différents en interne de toute façon. Dans le même ordre d'idées, wasm est le format de bibliothèque "natif" pour Webassembly, et pour la même raison qu'il était logique de nommer les bibliothèques gérées DLL:s (même si elles ne ressemblent en rien à des DLL natives:s en interne), cela peut avoir du sens pour les nommer wasm. Du point de vue de la sécurité, DLL implique "l'exécution locale" alors que wasm implique "l'exécution du navigateur". Pour se conformer au format wasm, peut-être que l'assembly .NET pourrait être intégré en tant que données pour en faire un wasm valide avec la chaîne initiale magique et tout.

L'idée ici est qu'il existe un analogue : wasm est à MSIL ce que PE est à MSIL : un format de conteneur wrapper. Précédent :

https://docs.microsoft.com/en-us/dotnet/standard/assembly-format

Le format binaire .NET est basé sur le format de fichier Windows PE. En fait, les bibliothèques de classes .NET sont des PE Windows conformes et semblent à première vue être des bibliothèques de liens dynamiques (DLL) Windows ou des exécutables d'application (EXE). C'est une caractéristique très utile sur Windows, où ils peuvent se faire passer pour des binaires exécutables natifs et obtenir une partie du même traitement (par exemple, chargement du système d'exploitation, outils PE).

Si le modèle Blazor ne fonctionne pas à 100% avec les pare-feu existants, c'est presque un bouchon de spectacle. Il devrait traverser tous les pare-feu sans effort, tout comme Javascript. Si j'étais un administrateur de pare-feu, je ne sais pas si je voudrais ajouter une nouvelle entrée de liste blanche pour chaque nouvelle langue qui a son propre format IL.

Si le modèle Blazor ne fonctionne pas à 100% avec les pare-feu existants, c'est presque un bouchon de spectacle.

@SteveSandersonMS désolé si vous avez déjà répondu à cette question, mais envisagez-vous que cela puisse être résolu ?

Bien sûr! Nous modifierons les URL ou le format du contenu selon les besoins.

ce serait formidable si cela pouvait être priorisé pour la prochaine étape. Apaiserait vraiment les craintes des gens selon lesquelles il s'agit d'un spectacle en raison de blocages potentiels de la sécurité de l'entreprise

@JonnyGibson Comme Steve l'a mentionné plus tôt, nous prévoyons de résoudre ce problème, mais dans l'esprit de Blazor étant un projet expérimental, nous donnons actuellement la priorité aux travaux qui sont moins bien compris. Nous sommes à peu près sûrs de savoir comment résoudre ce problème.

Voici un autre exemple :
blazor antivirus

Une solution serait peut-être de laisser le développeur définir l'extension d'une application jusqu'à ce que les pare-feu et AV ajoutent la prise en charge dans la liste blanche pour l'extension choisie.

Concernant mon commentaire précédent sur le fait de laisser le développeur définir l'extension, cela permettrait également aux développeurs de créer des applications avec différentes extensions pour tester le comportement du pare-feu et de l'antivirus.

@jonparker @torhovland j'ai l'impression qu'au lieu de définir des extensions qui peuvent ou non être bloquées, nous devons trouver un moyen de garantir qu'elles ne soient jamais bloquées. Personne n'utilisera un framework qui entraînera le blocage d'un site Web dans certains scénarios (très probables).

L'idée de supprimer l'extension semble raisonnable et devrait être essayée dès que possible. Je n'ai vu aucun autre problème soulevé qui soit aussi proche que celui-ci d'être un obstacle.

L'idée de supprimer l'extension semble raisonnable et devrait être essayée dès que possible.

Pour que nous puissions tester n'importe quel correctif, nous devons être en mesure de reproduire ou au moins d'étudier autant d'environnements problématiques que possible. Pour nous aider, veuillez continuer à fournir des détails sur vos environnements dans lesquels vous rencontrez des problèmes de blocage des applications Blazor. Merci à tous ceux qui ont déjà signalé cela!

Je n'ai vu aucun autre problème soulevé qui soit aussi proche que celui-ci d'être un obstacle.

À long terme, nous ne sommes pas trop préoccupés par cette question. Nous sommes assez confiants que nous serons en mesure de gérer ce problème avec une certaine forme d'empaquetage d'application ou de transformation d'application. Mais nous attendons de concevoir une solution jusqu'à ce que nous ayons plus de données sur les problèmes spécifiques.

WebSense est l'outil utilisé par mon réseau d'entreprise pour contrôler l'accès au Web. Je suis à peu près sûr que le problème qui bloque Blazor est simplement leur blocage explicite du téléchargement de fichiers exécutables.
https://www.websense.com/content/support/library/web/hosted/admin_guide/exten_block.aspx

On dirait qu'AVG bloque mon projet blazor. https://files.gitter.im/aspnet/Blazor/Oc8w/image.png
blazor antivirus

Je peux confirmer que j'ai également eu l'expérience du blocage de mon site Web par AVG. Mon ami n'a pas pu accéder au site Web sans désactiver AVG. autant que je sache, il a utilisé les paramètres antivirus par défaut.

L'extension DLL n'est pas un problème ... Avec la compilation AOT en cours, les DLL ne seront pas distribuées, car je comprends que les DLL sont utilisées pour une boucle de développement plus rapide. Ne perdez pas de temps là-dessus, faites fonctionner AOT, c'est le but.

Un puits... #897 était un doublon.

C'était mon erreur
image

peut-être pouvons-nous définir l'extension en tant que paramètre dans UpdateIndex où nous l'obtiendrons à partir de la ligne de commande (par défaut "dll") : https://github.com/aspnet/Blazor/blob/dev/src/Microsoft.AspNetCore.Blazor .Build/Core/IndexHtmlWriter.cs

Si j'envoyais un PR à ce sujet, serait-il pris en compte ?

Veuillez résoudre ce problème, c'est le seul élément qui m'empêche de tester cela dans l'entreprise.

Suggestion de solution rapide si vous utilisez IIS avec le module de réécriture d'url :

  • vous pouvez modifier dans la sortie tous les fichiers ".*.dll par .wasmnet ou quoi que ce soit. Il modifiera le contenu de la balise de script (https://docs.microsoft.com/en-us/iis/extensions/url-rewrite -module/creating-outbound-rules-for-url-rewrite-module)
  • réécrivez cette extension en dll pour que les bons fichiers soient envoyés au navigateur (ou renommez les fichiers dll après le déploiement)

vous pourrez peut-être le faire avec .net core https://docs.microsoft.com/fr-fr/aspnet/core/fundamentals/url-rewriting?view=aspnetcore-2.1&tabs=aspnetcore2x

Juste une autre idée : je note que la plupart de ces produits de pare-feu et de sécurité ne bloquent pas les fichiers .zip. En fait, plusieurs fois lorsque j'essaie de télécharger un fichier .dll où je suis bloqué sur un réseau d'entreprise, je remarque qu'une version .zip du même fichier réussira presque toujours le blocage.

Nous pourrions donc simplement empaqueter MyLib.dll en tant que MyLib.zip (contenant un seul fichier MyLib.dll à l'intérieur du zip). Le problème est que le navigateur décompressera nativement plus rapidement le contenu des fichiers que s'il s'agissait de WASM/MONO utilisant un assemblage .NET pour décompresser le contenu de l'archive compressée. Il y aurait au moins un ralentissement 2x-3x pour la décompression.

Mais il existe une solution : nous pourrions empaqueter le fichier MyLib.dll en tant que MyLib.zip avec une compression ZÉRO, puis laisser le serveur Web compresser le fichier (en utilisant les formats de compression pris en charge par le navigateur client lors de la demande du fichier). Lorsque le navigateur télécharge ce fichier, il décompressera nativement le contenu reçu, avant qu'il n'atteigne Mono/WebAssembly. Ainsi, le runtime Mono aurait alors juste besoin de décompresser le fichier .zip (qui à ce stade est l'archive zip non compressée d'origine).

J'espère que personne n'est confus par ce qui précède. Je suggère simplement que nous utilisions .zip comme format de conteneur non compressé ; laissez ensuite le navigateur Web et le serveur Web gérer la compression et la décompression comme ils le font normalement pour tout fichier demandé. Pour donner un exemple concret :

  1. 2 Mo mscorlib.dll sont .zippés dans 2 Mo mscorlib.zip (notez que nous avons défini la compression sur NONE).
  2. Le navigateur Web demande mscorlib.zip (envoi des en-têtes Accept-Encoding habituels avec les méthodes de compression prises en charge).
  3. Le serveur Web compresse le contenu de mscorlib.zip jusqu'à 700 Mo et l'envoie au serveur, de sorte que la taille du package serait la même qu'aujourd'hui)
  4. Le navigateur Web (Chrome ou Edge, etc.) décompresse le contenu de manière native, et le runtime Mono recevrait le fichier mscorlib.zip d'origine de 2 Mo, que WASM Mono peut décompresser très rapidement dans le fichier .dll d'origine, car aucune compression interne n'est utilisée sur cette archive zip d'origine.

C'est donc juste une autre suggestion à inclure dans le seau. Mes réflexions sur d'autres idées suggérées:

  • J'espère qu'il suffira de supprimer l'extension, car dans MyLib.dll devient MyLib ou la suggestion précédente MyLib_dll.
  • Je suis également d'accord qu'il devrait être possible de "conditionner" l'assembly en tant que données dans un fichier .wasm (mais toujours en interne au format IL) de la même manière que les assemblys .NET utilisent le format PE et ont reçu .dll comme extension. Nous pourrions donc avoir un MyLib.wasm qui stocke en interne l'IL sous forme de données. Le seul inconvénient que je vois ici est que lorsque nous avons une véritable compilation AOT, il peut être difficile de dire visuellement si un fichier .wasm contient du code compilé en IL ou en natif (WASM).

.dll serait l'extension appropriée et devrait être conservée par défaut. Cacher l'intention du fichier en changeant l'extension en .zip n'est pas une solution optimale, car cela produit de la confusion. Il serait probablement préférable de n'utiliser aucune extension et de nommer le fichier comme somedllname_v1_0_0_4321_ab5e8d5b97d141aca3c54776e82d2355
(c'est-à-dire le nom du projet, la version du fichier et un hachage SHA-256)

Un problème plus important est que les scanners AV actuels (de manière heuristique) détectent les routines qui récupèrent du code supplémentaire. Il n'y a pas de véritable solution à ce problème jusqu'à ce que les fournisseurs d'antivirus fassent des adaptations pour prendre en charge .wasm . Il vaut donc mieux contacter les fournisseurs AV et signaler un bogue, afin qu'ils puissent le corriger.

Je suis 100% d'accord avec @MovGP0. Les fournisseurs AV doivent mettre à jour leur logiciel. Ils utilisent différents algorithmes pour détecter le code malveillant et ces algorithmes doivent être suffisamment intelligents pour bloquer les virus et autoriser les logiciels légitimes. Je crois que chaque scanner AV moderne vérifie le contenu de chaque archive, zip, 7z, rar, etc. Changer l'extension du nom de fichier ou le pseudo-emballage n'est pas une solution à long terme.

Il semble juste idiot que ce soit un problème car le blocage est dû à des raisons héritées. Il existe deux scénarios avec Blazor pour les DLL :

  1. Code IL en cours d'exécution interprété dans un navigateur : dans ce cas, le code IL dans la DLL n'est que des DONNÉES brutes, et pas plus menaçant qu'un fichier JPG ou XML que le navigateur traite. C'est parce que l'IL téléchargé est complètement interprété. Le produit de sécurité n'a pas plus à faire avec cela qu'avec n'importe quel fichier GIF, XML ou TXT qu'un site Web traite.

ou (à l'avenir)

  1. Code IL compilé AOT en .wasm. Dans ce cas, le code IL générerait .WASM et le seul problème devrait être la façon dont ces produits de sécurité gèrent les fichiers .wasm.

Un autre point concernant le "compactage" est que c'est exactement ce que font déjà de nombreux frameworks javascript pour réduire les requêtes au serveur : avoir un script côté serveur combinant dynamiquement plusieurs scripts séparés déposés dans un seul fichier. Personnellement, j'aimerais voir un gestionnaire côté serveur intelligent qui pourrait combiner dynamiquement 20 petites DLL (5k) pour réduire les demandes initiales du serveur et me permettre, en tant que développeur, d'avoir éventuellement un certain contrôle sur cela pendant le chargement de la page.

Mais je pense que l'équipe Blazor a maintenant nos commentaires et fera tout ce qui est sensé et/ou proposera des options.

Je soulignerai que le point de vue selon lequel nous devons attendre que tout le monde mette à jour ses produits de sécurité ne fonctionne pas, car ce ne sont pas seulement les produits, ce sont les grandes entreprises existantes qui n'apporteront pas de manière réaliste des modifications de configuration à leur infrastructure réseau. Cela nuira vraiment à l'utilisation de Blazor car il ne s'agit pas seulement de scanners AV, il s'agit d'essayer de dire au personnel d'un service informatique d'une grande entreprise comme News Corporation ou Bhp Billiton d'apporter des modifications à la configuration du réseau. La culture change, mais il y a encore beaucoup d'employés dans ces départements qui ne se soucieraient tout simplement pas (ou souriraient activement) si cela causait des problèmes avec Blazor ☹.

  • Je crois que chaque scanner AV moderne vérifie le contenu de chaque archive, zip, 7z, rar, etc.
    Mon expérience personnelle au cours de la dernière décennie est que, sous forme .zip, tout va généralement bien. Les choses sont généralement bloquées si les fichiers sont .exe ou .dll. Dans une archive zip, la plupart des produits ne bloquent le fichier zip que s'ils détectent une signature réelle connue de logiciel malveillant dans l'archive zip (pas seulement parce qu'il contient un fichier .dll). Mais je reconnais que chaque produit est différent, il n'y a donc aucune garantie ici.
    De : Andrzej-W [email protected]
    Envoyé : mercredi 6 juin 2018 05:38
    À : aspnet/Blazor [email protected]
    Cc : jiggyswift [email protected] ; Commentaire [email protected]
    Objet : Re : [aspnet/Blazor] Envisagez de modifier les URL des assemblys .NET pour qu'ils ne se terminent pas par .dll (#172)

Je suis à 100% d'accord avec @MovGP0 https://github.com/MovGP0 . Les fournisseurs AV doivent mettre à jour leur logiciel. Ils utilisent différents algorithmes pour détecter le code malveillant et ces algorithmes doivent être suffisamment intelligents pour bloquer les virus et autoriser les logiciels légitimes. Je crois que chaque scanner AV moderne vérifie le contenu de chaque archive, zip, 7z, rar, etc. Changer l'extension du nom de fichier ou le pseudo-emballage n'est pas une solution à long terme.


Vous recevez ceci parce que vous avez commenté.
Répondez directement à cet e-mail, consultez-le sur GitHub https://github.com/aspnet/Blazor/issues/172#issuecomment-394834055 ou désactivez le fil https://github.com/notifications/unsubscribe-auth/AmF6aIkiXWAVe282A0YSh_a7bgmGPGN7ks5t5t4OgaJpZM4SUpej .

Deux personnes de l'équipe de sécurité de l'entreprise sont venues à mon bureau après avoir parcouru le site d'exemple mono wasm , qui télécharge un hello.exe . Je pense qu'il a été récupéré par "Symantec Endpoint Protection".

Merci Harry. Vous ont-ils laissé le temps de tout emballer dans une boîte avant de vous accompagner à la porte ? Meilleure histoire à ce jour.

De : Harry McIntyre [email protected]
Envoyé : jeudi 7 juin 2018 20:36
À : aspnet/Blazor [email protected]
Cc : jiggyswift [email protected] ; Commentaire [email protected]
Objet : Re : [aspnet/Blazor] Envisagez de modifier les URL des assemblys .NET pour qu'ils ne se terminent pas par .dll (#172)

Deux personnes de l'équipe de sécurité de l'entreprise sont venues à mon bureau après avoir parcouru le site d'exemple mono wasm https://nam01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.hipbyte.com % 2F% 257Elrz% 2Fmono-wasm-bonjour & data = 02% 7C01% 7C% 7Cf21af207f881447e8d5d08d5cc627621% 7C84df9e7fe9f640afb435aaaaaaaaaaaa% 7C1% 7C0% 7C636639645608861860 & sdata = Cp9wUKXElAX4z39zarw0DQOlhHo3ZY0MtSRdz8j5YDw% 3D et réservé = 0 , qui télécharge un hello.exe. Je pense qu'il a été récupéré par "Symantec Endpoint Protection".


Vous recevez ceci parce que vous avez commenté.
Répondez directement à cet e-mail, consultez-le sur GitHub https://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Faspnet%2FBlazor%2Fissues%2F172%23issuecomment-395374377&data=02 % 7C01% 7C% 7Cf21af207f881447e8d5d08d5cc627621% 7C84df9e7fe9f640afb435aaaaaaaaaaaa% 7C1% 7C0% 7C636639645609018105 & sdata = A9rl39HzRP7w9mzRkqPKrG4zsHJKkVIy2jwJ0e9nc3g% 3D et réservé = 0 , ou couper le fil https://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub. com% 2Fnotifications% 2Funsubscribe-auth% 2FAmF6aG9lvmy2g93BQQmI-5mbrGICanCxks5t6QIPgaJpZM4SUpej & data = 02% 7C01% 7C% 7Cf21af207f881447e8d5d08d5cc627621% 7C84df9e7fe9f640afb435aaaaaaaaaaaa% 7C1% 7C0% 7C636639645609018105 & sdata = yZhLQXXqqp0hLEtD3mTowdoI4EpBu5qNNR0UI4tZDm8% 3D et réservé = 0 .

Peut être utile:

Depuis https://www.cisco.com/c/en/us/td/docs/security/firepower/623/configuration/guide/fpmc-config-guide-v623/file_policies_and_advanced_malware_protection.html

Le système peut inspecter jusqu'à trois niveaux de fichiers imbriqués sous le fichier d'archive le plus externe (niveau 0) si le fichier est une archive (comme les fichiers d'archive .zip ou .rar). Vous pouvez inspecter des fichiers d'archives aussi volumineux que la taille de fichier maximale pour stocker le paramètre de contrôle d'accès avancé.
Si un fichier individuel correspond à une règle de fichier avec une action de blocage, le système bloque l'intégralité de l'archive, pas seulement le fichier individuel. Le système peut également bloquer les archives qui dépassent un niveau d'imbrication spécifié, ou dont le contenu est crypté ou ne peut pas être inspecté.

Un autre lien (faites défiler jusqu'à "Fonctionnalité des types de fichiers") :
https://supportcenter.checkpoint.com/supportcenter/portal?eventSubmit_doGoviewsolutiondetails=&solutionid=sk105318&js_peid=P-14d3e69bf07-10000

J'ai trouvé une solution de contournement décrite ici : https://remibou.github.io/Change-Blazor-DLL-extension-with-ASPNET-Core/. Cela n'aidera peut-être pas pour tous les cas et AV, mais c'est un point de départ.

@RemiBou mec... c'est génial :) Bonne prise sur l'utilisation d'URLRewrite pour ça ! 👍

Au sujet du remplacement de l'extension dll, je voudrais pousser pour l'extension wasm (même si elle n'est pas techniquement correcte) car les pages github, cloudflare et probablement la plupart des CDN gèrent déjà la compression pour "application/wasm" mais pas pour "application/ octet-stream", donc une application Blazor par défaut pèse environ 3,2 Mo avec uniquement mono.wasm compressé avec brotli. Au final, les bibliothèques Blazor vont déjà être wasm de toute façon lorsque la compilation AOT sera en place, n'est-ce pas ?

Je viens de tester l'astuce @RemiBou en utilisant l'extension wasm et en renommant les dll avant de les pousser vers gh-pages et maintenant un rafraichissement à froid revient à 1,9 Mo comme il se doit : super ! Merci @RemiBou !!

Mais mon antivirus Avast est initialement devenu fou parce que tous ces faux fichiers wasm étaient infectés par DRep et j'ai eu la même fenêtre d'alerte que @jorisvergeer . Après une recherche rapide, je pense que le problème pourrait être résolu en téléchargeant les fausses bibliothèques wasm à partir d'un site avec une meilleure réputation que mon sous-domaine récemment créé, mais je ne fais que deviner maintenant.

Pour un exemple de l'échec d'une application blazor côté client depuis l'intérieur d'une entreprise, consultez le fichier PDF joint. C'est un problème frustrant du point de vue d'un développeur car nous sommes à la merci de quelque chose qui échappe à notre contrôle.

Ce serait génial si nous pouvions essayer de pré-compiler les dll en fichiers wasm et ensuite pouvoir les télécharger à la place. (j'espère que ça marchera)

403interdit.pdf

Le message 403 interdit dans le message précédent a été généré par notre pare-feu zscaler.

Quelle est la meilleure façon d'apporter de la visibilité et de la priorité à ce problème afin qu'il soit pris en compte dans un futur sprint ?

@rynowak @SteveSandersonMS @mkArtakMSFT Nous devons nous assurer que nous avons une solution pour cela, alors passons au jalon blazor-wasm.

J'ai créé un document décrivant la solution que j'utilise actuellement pour contourner les dll bloquées par zScaler.

https://github.com/jucchytil/CSBNotes/blob/master/Notes.md

Je soupçonne que nous devrons peut-être envisager une solution similaire pour les fichiers WASM car il est possible que les fabricants de pare-feu mettent un certain temps à accepter les fichiers wasm comme étant sûrs au cours des deux prochaines années.

J'attends vraiment avec impatience le PublishSingleFile/PublishTrimmed/TargetFramework=wasm afin que nous n'ayons qu'un seul fichier relativement petit à gérer dans le service worker.

Tes pensées?

Merci Dan!
Je suis reconnaissant que cela attire l'attention.
J'ai posté ma solution provisoire sur https://github.com/aspnet/AspNetCore/issues/5477
J'espère que cela peut aider d'une manière ou d'une autre.
Jo

De : Daniel Roth [email protected]
Envoyé : vendredi 11 octobre 2019 10:33
À : aspnet/AspNetCore [email protected]
Cc : jucchytil [email protected] ; Commentaire [email protected]
Objet : Re : [aspnet/AspNetCore] Envisagez de modifier les URL des assemblys .NET pour qu'ils ne se terminent pas par .dll (#5477)

@rynowak https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Frynowak&data=02%7C01%7C%7Cecf83fca357f4abe690d08d74e604c75%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637064047810603291&sdata=N5o8HJ7%2FM1UInuoFp1HXbY9AqDhM8BCm % 2F0IGZujyqqI% 3D et réservé = 0 @SteveSandersonMS https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FSteveSandersonMS&data=02%7C01%7C%7Cecf83fca357f4abe690d08d74e604c75%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0 % 7C637064047810613296 & sdata = vDuSWWEJ0CGf7ex7TStTMrHH1E27V5eza% 2FMJKIkr% 2BeY% 3D et réservé = 0 @mkArtakMSFT https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FmkArtakMSFT&data=02%7C01%7C%7Cecf83fca357f4abe690d08d74e604c75 %7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637064047810623307&sdata=ltzBUDC4c8o9kPvFmBlIOHN1B%2BUI2Fj%2FspG4WCIo%2BD8%3D&reserved=0


Vous recevez ceci parce que vous avez commenté.
Répondez directement à cet e-mail, consultez-le sur GitHub https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Faspnet%2FAspNetCore%2Fissues%2F5477%3Femail_source%3Dnotifications%26email_token % 3DAEBYRE4UUUJDL3KHNPOYYJ3QOCMCVA5CNFSM4GK4V5L2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEBALS2Y% 23issuecomment-541112683 & data = 02% 7C01% 7C% 7Cecf83fca357f4abe690d08d74e604c75% 7C84df9e7fe9f640afb435aaaaaaaaaaaa% 7C1% 7C0% 7C637064047810633312 & sdata = qxqf5LstFcAUsEgSImIxMMOw33sNOgku09qw% 2FJp3Z18% 3D et réservé = 0 , ou désabonnement https://eur01.safelinks.protection.outlook.com/?url= https% 3A% 2F% 2Fgithub.com% 2Fnotifications% 2Funsubscribe-auth% 2FAEBYRE2MQUF65CHXQD54OWDQOCMCVANCNFSM4GK4V5LQ & data = 02% 7C01% 7C% 7Cecf83fca357f4abe690d08d74e604c75% 7C84df9e7fe9f640afb435aaaaaaaaaaaa% 7C1% 7C0% 7C637064047810643323 & sdata = yx154tNWkGvXlXbVJNjvswed9hG0zr91HFqIhMVLCfo% 3D et réservé = 0 .

Je fais suite à une demande de Daniel Roth sur son blog, qui m'a demandé de publier le nom de mon fournisseur d'hébergement Web ici, afin que vous puissiez tester ce problème. Le commentaire du blog peut être trouvé ici : - https://devblogs.microsoft.com/aspnet/asp-net-core-and-blazor-updates-in-net-core-3-0/#comment -955

L'hébergeur en question est infinityfree.net. Ils sont gratuits, il sera donc facile de les essayer !

Fondamentalement, lors du téléchargement du site, leur serveur supprimera environ la moitié des DLL du dossier _framework\bin\. J'ai d'abord pensé que quelque chose s'était mal passé et j'ai essayé à plusieurs reprises de télécharger les fichiers manquants. Finalement, ils semblaient "coller", comme si leur serveur avait abandonné la vérification antivirus des nouveaux fichiers et qu'un jour plus tard, ils étaient toujours là (bien qu'ils finiront peut-être par être balayés).

Quoi qu'il en soit, veuillez ajouter mon vote pour une solution appropriée telle que renommer les DLL.

@ andyste1 Merci pour l'info. Avez-vous vérifié et confirmé que si les fichiers ont été renommés, ils ne sont pas supprimés ? Si la société d'hébergement le fait en se basant sur le contenu plutôt que sur le nom, alors renommer ne serait pas nécessairement une solution.

Renommer peut ne pas aider beaucoup - une solution de contournement est déjà disponible pour y parvenir.
Pour moi, le problème est le format PE du fichier - le programme antivirus, Sophos, bloquera les fichiers chaque fois que je le renommerai, car il a également analysé le contenu du fichier. Heureusement, Sophos autorise le téléchargement de fichiers DLL (format PE) via HTTPS (et non HTTP).

@lertoo, nous discutons de la possibilité de supprimer les métadonnées PE des assemblys pour réduire la taille, mais cela peut également aider à résoudre ce problème.

Version antivirus Norton de ce problème : https://forums.asp.net/t/2161027.aspx

Il est très probable que non seulement l'extension de fichier, mais aussi l'en-tête de fichier causent un problème avec certains logiciels paranoïaques. L'obscurcissement n'aidera pas lorsque le problème concerne l'en-tête, sauf que le JS qui démarre la machine virtuelle Blazor ne les remplace pas manuellement en mémoire d'une manière ou d'une autre, mais c'est long.

Ma solution de contournement actuelle consiste à fournir une version encodée en Base64 de chaque DLL dans mon pipeline CI/CD, en utilisant un service worker pour détecter le 403 du pare-feu pour la DLL, en téléchargeant la version Base64 du fichier texte DLL et en reconvertissant Base64 en DLL dans le service worker avant de le mettre en cache dans le navigateur.

Il serait curieux de voir si le problème disparaît si nous pouvions simplement convertir les DLL en fichiers WASM car le fichier WASM semble fonctionner correctement pour moi, mais ce n'est peut-être pas vrai pour tous les pare-feu.

Un autre faux positif de Blazor WebAssembly :

image

J'attends depuis début 2018 que ce problème soit résolu :) j'aime/aimais Blazor, mais celui-ci semblait être un tel bouchon potentiel, si les dll ne pouvaient pas être modifiées

@JonnyGibson Merci pour votre patience ! Nous travaillons pour avoir une sorte de résolution de ce problème pour la prochaine version en mai de cette année.

C'est un problème assez long, j'ai donc essayé de résumer tout cela ici:

antivirus

  • NOD32 (ESET)
  • AVG version 18.1.3044 (+3)
  • Analyse du trafic Web
  • Avast (+3)
  • Protection des terminaux Symantec
  • zScaler

Renommer les propositions

  • .blazor (+35)
  • .bin (+3)
  • .lib
  • .ilasme (+6)
  • net (+14)
  • .wasm (-8)
  • [personnalisé] (+1)
  • [Aucun]

Les gens utilisent des solutions de contournement

  • Renommer l'extension
  • BASE64 encode les DLL

Notes générales

  • Les .DLL et les .EXE sont des extensions que de nombreuses entreprises bloquent au niveau du pare-feu, en tant que politique.
  • Il y a eu des rapports d'extensions renommées également signalées par un logiciel antivirus

@mkArtak
Vous pouvez également inclure zScaler quelque part dans votre résumé car c'est ce qui bloquait mes téléchargements.

Une approche à tester consiste à convertir tous les exécutables en fichiers wasm car je ne me souviens pas que zScaler ait eu des problèmes avec eux.

Je suis temporairement passé à Angular jusqu'à ce que Blazor côté client résolve ces problèmes et ait de meilleurs temps de téléchargement initiaux.

J'ai consacré beaucoup de temps à essayer de faire fonctionner Blazor côté client et j'ai décidé d'attendre que la plate-forme ait mûri un peu plus.
https://github.com/jucchytil/CSBNotes/blob/master/Notes.md

@javiercn suivons le travail de renommage de l'extension de fichier ici et je déposerai un problème séparé pour faire le suivi avec les fournisseurs d'antivirus à ce sujet.

ACTION REQUISE

🎫
Je viens de créer un nouveau problème dans lequel nous allons essayer de collecter tous les logiciels spécifiques bloquant les applications Blazor WASM. Veuillez fournir des informations spécifiques à votre cas, comme décrit ici : https://github.com/dotnet/aspnetcore/issues/19552

En passant, les CDN comme les pages github et cloudflare compressent les actifs avec une extension wasm prête à l'emploi alors qu'ils servent une version non compressée pour les fichiers dll. Si je me souviens bien, Azure CDN devrait se comporter de la même manière.

Nous en avons fait l'expérience aujourd'hui. La levée de la restriction sur le téléchargement de DLL ne sera pas une option. Non seulement pour nous, mais il est très peu probable que nos clients suppriment également cette restriction - nous avons donc vraiment besoin d'un correctif pour cela, sinon notre projet Blazor est mort dans l'eau (l'employeur ne veut pas utiliser le côté serveur).

Je crois que notre pare-feu est un Palo Alto.

@mrpmorris pouvez-vous mettre les détails dans https://github.com/dotnet/aspnetcore/issues/19552 car c'est là que nous les collectons afin que nous puissions engager des fournisseurs.

@mrpmorris a-t-il changé l'extension pour résoudre le problème dans votre scénario ?

Salut @javiercn

Je viens de mettre à jour ce problème. Il semble que le passage à https a fonctionné pour nous, ce qui est logique. Nous ne pouvons pas être sûrs que nos clients sont prêts à avoir la même exception.

Je serai heureux de vérifier l'option de renommage. Avez-vous un lien vers des instructions sur la façon de faire fonctionner Blazor avec les extensions .wasm ou autre chose ? Pour le moment, je clique simplement avec le bouton droit sur mon projet de serveur Web et je choisis Publish directement vers une application Web Azure.

@mrpmorris Vous pouvez consulter les instructions ici
https://github.com/dotnet/aspnetcore/pull/19558#issuecomment -594461263

@mrpmorris Veuillez noter que ces instructions ne s'appliquent qu'à nos dernières versions 3.2.0-preview2 et que la mise à niveau à partir de 3.2.0-preview1 nécessitera un peu de travail en utilisant des étapes que nous n'avons pas encore publiées. Vous voudrez peut-être attendre jusqu'à ce que nous publions plus tard ce mois-ci.

@ danroth27 Je ne pense pas que vous ayez encore publié l'aperçu2... :)

Vous pouvez essayer cela avec les versions nocturnes en suivant les instructions ici si vous choisissez de le faire.

Je vous recommande de vider les caches de vos packages nuget avant et après si vous choisissez de le faire. Tenez compte du fait que l'effacement des caches aura un impact sur l'ensemble de la machine (toutes les applications de cette machine)

J'attendrai la sortie de la version p2, puis je l'essaierai. Merci!

@mrpmorris 3.2 Preview 2 est maintenant disponible ! Les étapes suggérées dans https://github.com/dotnet/aspnetcore/pull/19558#issuecomment -594461263 pour renommer les fichiers vous conviennent-elles ?

Salut les gens!

Dans la récente version de Blazor WebAssembly 3.2 Preview 2 , nous avons apporté quelques modifications pour faciliter le renommage des fichiers .dll dans votre application afin de traiter les proxies/pare-feu/antivirus interférant avec les applications Blazor WebAssembly. Nous aimerions que les personnes qui rencontrent ce problème essaient les étapes ci-dessous sur la sortie publiée de vos applications Blazor WebAssembly (autonomes ou hébergées par ASP.NET Core) et voient si cela aide :

les fenêtres

  • Ouvrez une invite PowerShell dans le répertoire wwwroot de votre sortie publiée (par exemple, dans yourapp\bin\Release\netstandard2.1\publish\wwwroot
  • Exécutez les deux lignes suivantes :
dir .\_framework\_bin | rename-item -NewName { $_.name -replace ".dll\b",".bin" }
((Get-Content .\_framework\blazor.boot.json -Raw) -replace '.dll"','.bin"') | Set-Content .\_framework\blazor.boot.json

Linux / mac OS

  • Ouvrez un terminal dans le répertoire wwwroot de votre sortie publiée (par exemple, dans yourapp/bin/Release/netstandard2.1/publish/wwwroot
  • Exécutez les deux lignes suivantes :
for f in _framework/_bin/*; do mv "$f" "`echo $f | sed -e 's/\.dll\b/.bin/g'`"; done
sed -i 's/\.dll"/.bin"/g' _framework/blazor.boot.json

Veuillez essayer ces étapes et faites-nous savoir comment cela se passe. Si vous rencontrez toujours des problèmes, veuillez nous en informer ! Nous avons d'autres idées de choses à essayer si nécessaire.

Merci!

Cela a fonctionné pour moi. Même si j'ai dû ajuster mon étape de publication sur Azure DevOps et désactiver qu'il génère un zip à la fin.

Dans mon cas:

- task: DotNetCoreCLI<strong i="7">@2</strong>
  displayName: 'dotnet publish'
  inputs:
    command: 'publish'
    publishWebProjects: false
    zipAfterPublish: false
    projects: |
      **/ApplySupportTool.Server.csproj
    arguments: '--configuration $(buildconfiguration)  --output $(Build.ArtifactStagingDirectory)'

- task: PowerShell<strong i="8">@2</strong>
  displayName: Change Outputname
  inputs:
    targetType: 'inline'
    workingDirectory: $(Build.ArtifactStagingDirectory)\ApplySupportTool.Server\wwwroot
    script: |
         dir .\_framework\_bin | rename-item -NewName { $_.name -replace ".dll\b",".bin" }
         ((Get-Content .\_framework\blazor.boot.json -Raw) -replace '.dll"','.bin"') | Set-Content .\_framework\blazor.boot.json

@NPadrutt Cela a fonctionné dans quel sens ? Dans le sens où vous avez observé de manière concluante que votre site ne fonctionnait pas auparavant (à cause d'une sorte d'antivirus ou de pare-feu), et que le changement d'URL a corrigé cela ? Si tel est le cas, pourriez-vous s'il vous plaît être en mesure de publier des détails sur l'antivirus/pare-feu/etc qui vous causait des problèmes auparavant sur https://github.com/dotnet/aspnetcore/issues/19552 ? Merci!

@SteveSandersonMS eh bien, j'avais auparavant le travail via le réécrivain en place. Après la mise à niveau vers l'aperçu 3.2 2, celui-ci ne fonctionnait plus et l'application était à nouveau bloquée. Avec ce qui précède, cela fonctionne à nouveau.

Malheureusement, je ne peux pas vous dire quel pare-feu nous avons dans notre réseau et je ne pense pas que l'AntiVirus (McAffee) ait un impact ici, car le travail en local a fonctionné sans problème.

Quelqu'un à mon bureau a été testé positif au COVID-19, il semble donc que mon bureau sera fermé pendant quelques semaines - ce qui signifie que je n'accéderai pas aux fichiers via leur pare-feu. Pardon.

@mrpmorris Pas de problème. Être prudent!

Salut les gens!

Dans la récente version de Blazor WebAssembly 3.2 Preview 2 , nous avons apporté quelques modifications pour faciliter le renommage des fichiers .dll dans votre application afin de traiter les proxies/pare-feu/antivirus interférant avec les applications Blazor WebAssembly. Nous aimerions que les personnes qui rencontrent ce problème essaient les étapes ci-dessous sur la _sortie publiée_ de vos applications Blazor WebAssembly (autonomes ou hébergées par ASP.NET Core) et voient si cela aide :

@danroth27

J'ai exécuté le script (je développe sur Windows, mais je déploie depuis un environnement Linux vers un autre environnement Linux, j'ai donc utilisé le script Linux fourni) et il s'est déployé avec les nouveaux noms, et lors du chargement de la page, il semble charger les fichiers avec les nouvelles extensions, et l'application fonctionne. Dans notre cas, Avast ne signale plus l'application et ne bloque plus les téléchargements.

En raison de la situation pandémique, il nous faudra un peu de temps avant de vérifier la situation du pare-feu de l'entreprise.

Il s'agit d'une étape assez simple à ajouter à la construction et qui semble n'avoir aucun inconvénient, nous allons donc commencer à l'utiliser.

Merci!

@ danroth27 est-ce que cela va être la valeur par défaut à un moment donné, donc nous n'avons pas besoin de faire cette étape ? Y a-t-il vraiment une raison de ne pas simplement passer à .bin ou à aucun type de fichier par défaut au lieu d'obliger tout le monde à le faire s'il y a un problème général avec le type de fichier .dll ?

Y a-t-il une chance qu'un antivirus vérifie le fichier même s'il ne s'agit pas de ".dll" pour voir s'il s'agit d'un fichier dll ?

@danroth27 @SteveSandersonMS
J'ai eu beaucoup d'erreurs dans la console du navigateur liées à un échec d'intégrité ou à un fichier introuvable :

_framework/_bin/Blazored.LocalStorage.dll:1 Failed to load resource: the server responded with a status of 404 ()
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
Failed to find a valid digest in the 'integrity' attribute for resource '<URL>' with computed SHA-256 integrity '47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='. The resource has been blocked.
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/BlazorStrap.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.AspNetCore.Blazor.HttpClient.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.AspNetCore.Components.dll:1 Failed to load resource: the server responded with a status of 404 ()
_framework/_bin/Microsoft.AspNetCore.Components.Authorization.dll:1 Failed to load resource: the server responded with a status of 404 ()
_framework/_bin/Microsoft.AspNetCore.Components.WebAssembly.Authentication.dll:1 Failed to load resource: the server responded with a status of 404 ()
_framework/_bin/Microsoft.AspNetCore.Authorization.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.AspNetCore.Components.Web.dll:1 Failed to load resource: the server responded with a status of 404 ()
_framework/_bin/Microsoft.AspNetCore.Components.Forms.dll:1 Failed to load resource: the server responded with a status of 404 ()
_framework/_bin/Microsoft.AspNetCore.Components.WebAssembly.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
admin:1 Unknown error occurred while trying to verify integrity.
admin:1 Unknown error occurred while trying to verify integrity.
admin:1 Unknown error occurred while trying to verify integrity.
admin:1 Unknown error occurred while trying to verify integrity.
admin:1 Unknown error occurred while trying to verify integrity.
A cookie associated with a cross-site resource at <URL> was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at <URL> and <URL>.
A cookie associated with a cross-site resource at <URL> was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at <URL> and <URL>.
A cookie associated with a cross-site resource at <URL> was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at <URL> and <URL>.
A cookie associated with a cross-site resource at <URL> was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at <URL> and <URL>.
A cookie associated with a cross-site resource at <URL> was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at <URL> and <URL>.
A cookie associated with a cross-site resource at <URL> was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at <URL> and <URL>.
blazor.webassembly.js:1 Error: Failed to start platform. Reason: TypeError: Failed to fetch
    at blazor.webassembly.js:1
    at blazor.webassembly.js:1
    at Object.throw (blazor.webassembly.js:1)
    at u (blazor.webassembly.js:1)
d.printErr @ blazor.webassembly.js:1
_framework/_bin/Microsoft.AspNetCore.Metadata.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Bcl.HashCode.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.CSharp.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.EntityFrameworkCore.Abstractions.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Caching.Abstractions.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.EntityFrameworkCore.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.EntityFrameworkCore.Relational.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Caching.Memory.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Configuration.Abstractions.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Configuration.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Configuration.Json.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.DependencyInjection.Abstractions.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.DependencyInjection.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Identity.Core.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Identity.Stores.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Logging.Abstractions.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Logging.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Options.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.Extensions.Primitives.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Microsoft.JSInterop.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Mono.Security.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/MovingPicturesEvents.Core.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/MovingPicturesEvents.Services.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/mscorlib.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/MovingPicturesEvents.Web.Client.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/netstandard.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/Radzen.Blazor.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Collections.Immutable.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.ComponentModel.DataAnnotations.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Core.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Data.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Diagnostics.DiagnosticSource.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Linq.Dynamic.Core.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Net.Http.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Net.Http.Json.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Numerics.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Runtime.CompilerServices.Unsafe.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Text.Encodings.Web.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Text.Json.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Transactions.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Xml.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/System.Xml.Linq.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/WebAssembly.Bindings.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.
_framework/_bin/WebAssembly.Net.Http.dll:1 Failed to load resource: the server responded with a status of 404 ()
admin:1 Unknown error occurred while trying to verify integrity.

J'ai essayé les étapes @ danroth27 mentionnées à la fois sur Windows et sur un conteneur Linux Docker avec les mêmes résultats.

Utilisation de 3.2 Aperçu 4.

@radderz Ce problème ne semble pas affecter tous les environnements - il est spécifique à certains environnements et est souvent basé sur des politiques. Si nous passons à une autre extension de fichier, rien ne garantit que cela fonctionnera pour tout le monde. Ainsi, au lieu de changer la valeur par défaut pour tout le monde, nous allons de l'avant avec le plan où les clients qui rencontrent ce problème peuvent contrôler eux-mêmes les extensions de fichier en utilisant la technique fournie ci-dessus.

Il est certainement possible que les logiciels antivirus/proxies/pare-feu effectuent une inspection plus approfondie des fichiers que de simplement regarder l'extension du fichier. Jusqu'à présent, nous n'avons encore entendu parler d'aucune personne bloquée par cela. Si cela devient un problème, nous aurons d'autres mesures d'atténuation.

@mihaimyh Il semble que vous ayez une politique de sécurité de contenu mal configurée ?

@mihaimyh Il semble que vous ayez une politique de sécurité de contenu mal configurée ?

@danroth27 Pouvez-vous, s'il vous plaît, être plus explicite ? De quelle politique de sécurité parles-tu ? J'ai eu ces erreurs même dans un environnement de développement où je pense qu'aucune politique de sécurité n'est mise en œuvre.

@mihaimyh Désolé, je pense avoir confondu la politique de sécurité du contenu avec l'intégrité des sous-ressources. Il semble que le navigateur essaie de faire en sorte que les hachages des ressources téléchargées correspondent aux hachages spécifiés dans le balisage via l'attribut integrity , mais l'attribut integrity est manquant. Cela pourrait également être lié à la façon dont Blazor télécharge et met en cache les ressources de l'application, qui utilise une stratégie similaire basée sur le hachage pour vérifier si les fichiers ont changé.

@mihaimyh Désolé, je pense avoir confondu la politique de sécurité du contenu avec l'intégrité des sous-ressources. Il semble que le navigateur essaie de faire en sorte que les hachages des ressources téléchargées correspondent aux hachages spécifiés dans le balisage via l'attribut integrity , mais l'attribut integrity est manquant. Cela pourrait également être lié à la façon dont Blazor télécharge et met en cache les ressources de l'application, qui utilise une stratégie similaire basée sur le hachage pour vérifier si les fichiers ont changé.

@ danroth27 Ok, et je crois que je peux contourner la vérification d'intégrité en ajoutant

<BlazorCacheBootResources>false</BlazorCacheBootResources>

à mes fichiers .csproj mais j'ai toujours un événement 404 avec la vérification d'intégrité désactivée.

@mihaimyh Si vous pouvez reproduire cela de manière fiable, je suggérerais d'ouvrir un nouveau problème pour ce problème, car il ne semble pas être lié au problème des extensions de fichiers. Cela facilitera l'engagement des bonnes personnes.

Assurez-vous que vous ajoutez quelque chose comme ça dans votre script "dll rename"

# Remove compressed versions of blazor.boot.json because it still looks for .dll files
Remove-Item ".\_framework\blazor.boot.json.gz"
Remove-Item ".\_framework\blazor.boot.json.br"

La plupart du temps, le blazor.boot.json précompressé sera téléchargé au lieu du blazor.boot.json "fixe" faisant des demandes aux fichiers ".dll" au lieu des fichiers ".bin" causant le problème d'intégrité.

Vous devez donc soit supprimer les fichiers json compressés, soit recompresser le blazor.boot.json, mais je ne pense pas que cela vaille la peine de passer par ces tracas.

Espérons qu'un jour tout cela puisse être géré par le framework avec un drapeau dans le csproj, par exemple

<BlazorBinariesExtension>.bin</BlazorBinariesExtension>

Salut les gens. À ce stade, nous avons documenté la stratégie que nous recommandons pour modifier l'extension de fichier des assemblys .NET publiés à l'aide de scripts. Je pense que la suggestion de @stavroskasidis est toujours bonne pour fournir un moyen intégré simple de le faire, j'ai donc ouvert https://github.com/dotnet/aspnetcore/issues/21489 pour suivre la suggestion. À ce stade, je pense que nous sommes prêts à clore ce problème. Merci à tous pour les commentaires détaillés fournis !

D'après ce que je peux voir, le renommage de .dll en .bin doit également être effectué dans wwwroot/service-worker-assets.js et supprimer ou recompresser wwwroot/service-worker-assets.js.br et wwwroot/service-worker-assets.js.gz , sinon il y a des problèmes d'intégrité dans console du navigateur.

Cette page vous a été utile?
0 / 5 - 0 notes