Aspnetcore: .dll로 끝나지 않도록 .NET 어셈블리의 URL을 변경하는 것을 고려하십시오.

에 만든 2018년 02월 27일  ·  104코멘트  ·  출처: dotnet/aspnetcore

https://blazor-demo.github.io/ 에서 데모를 보고 싶었고 회사 방화벽이 MicroApp.dll 차단했지만 다른 dll은 성공적으로 다운로드되었습니다. 많은 소프트웨어가 Windows 바이너리 다운로드/전송에 대해 편집증적이기 때문에 약간 난독화할 가치가 있습니까? 아니면 적어도 이름을 바꾸는 것입니까?

Components Big Rock area-blazor blazor-wasm enhancement

가장 유용한 댓글

YourAssembly.blazor 는 어떻습니까? 웹 개발자가 사이트가 어떻게 구축되었는지 알아보기 위해 개발 도구를 살펴보면 프로젝트를 홍보하는 좋은 방법이 될 수 있습니다(아주 약간)? 아니면 가끔 사이트가 Vue.js로 구축된 것을 발견하고 "오, 멋지다"라고 생각하는 것은 저뿐일 수도 있습니다. :)

모든 104 댓글

흥미롭네요. 알려주셔서 감사합니다. URL을 YourAssembly_dll 또는 이와 유사한 것으로 변경하는 방법을 살펴보겠습니다. 기본적으로 수행할지 여부는 이에 대한 더 많은 보고서를 받는지 여부와 설정할 수 있는지 여부에 따라 이름 또는 더 깊은 이유가 있습니다. 페이로드 내용 검사.

@SteveSandersonMS 는 여기에 내 2c를 떨어 뜨립니다. .dll-fobia 로 고통받는 것은 기업 방화벽만이 아닙니다. 일부 로컬 안티 바이러스에도 이와 동일한 문제가 있습니다.

@galvesribeiro 는 내가 무슨 일이 일어나고 있는지 잘 알지 못하고 DLL을 다운로드하려는 웹사이트를 본다면 그곳에서 빠져나갈 수 있다는 점은 말할 필요도 없습니다! 이것을 다룰 때 인식을 고려하십시오 :)

@joeizy 예, 대부분의 경우 dll을 차단하는 것이 옳은 일이라는 데 전적으로 동의합니다. 그것이 우리가하는 일을 확신하기 때문에 이름을 바꾸는 것에 대해 이야기하는 이유입니다 ...

YourAssembly.blazor 는 어떻습니까? 웹 개발자가 사이트가 어떻게 구축되었는지 알아보기 위해 개발 도구를 살펴보면 프로젝트를 홍보하는 좋은 방법이 될 수 있습니다(아주 약간)? 아니면 가끔 사이트가 Vue.js로 구축된 것을 발견하고 "오, 멋지다"라고 생각하는 것은 저뿐일 수도 있습니다. :)

간단히 .bin은 어떻습니까?

.bin이나 .blazor도 좋아합니다.

+1 ".bin"

.lib 또는 .bin 또는 .ilasm ?

따라서 이에 대해 정보에 입각한 결정을 내릴 수 있습니다. 대략적인 재현 단계(또는 해당 방향에 대한 최소한의 힌트)가 있다면 정말 도움이 될 것입니다. 예를 들어 이름 문제인지 콘텐츠 문제인지 구체적으로 이해해야 합니다.

기본적으로 또는 일반적인 구성에서 .dll 를 차단하는 것으로 알려진 특정 방화벽 제품은 무엇입니까? 내가 설치하고 시도할 수 있는 것을 알려줄 수 있습니까? 또는 그렇지 않은 경우 최소한 이름이 있고 구성 문서에 대한 링크가 있습니까?

@SteveSandersonMS 특정 제품은 아닌 것 같아요. 여러 제품, 특히 기업에서 많이 사용하는 제품에는 특히 .exe, .dll, .so 등과 같은 일반적인 파일 형식에 대한 조수 구성 설정이 있습니다.

이름 자체가 첫 번째 차단기이지만 이 문제를 _감소_하는 한 가지 방법은 .Net 2.0 이후로 ClickOnce를 처리하는 방식과 동일합니다. 서명 어셈블리.

문제는 (1) 비용이 저렴하지 않다는 것, (2) 여유가 있더라도 해당 인증서를 취득하는 과정이 매우 복잡하고 일부 국가에서는 사용할 수 없으며 심지어 취득하더라도 사용할 수 없다는 것입니다. 회사/개발자는 일반적으로 바이러스 백신 소프트웨어 데이터베이스가 _신뢰하는_ 데 시간이 걸립니다.

MSFT 릴리스 어셈블리의 경우 OSSed 어셈블리를 포함하여 배송된 모든 어셈블리가 corpnet 정책에 의해 코드 서명된다는 것을 알고 있기 때문에 큰 뉴스는 아닙니다. 그러나 다른 개발자, 신생 기업 및 OSS 프로젝트를 생각해 보십시오. 그들 모두는 그것으로 고통받을 것입니다.

Silverlight가 중요했던 옛날에는 필요에 따라 어셈블리를 다운로드하려면 xap 파일(실제로는 zip 파일임)에 넣은 다음 다음으로 압축을 풉니다.
https://msdn.microsoft.com/en-us/library/cc190632 (v=vs.95).aspx

그 이유가 있는지 확실하지 않습니다(단일 파일에 여러 dll을 결합하는 것 제외). Silverlight 팀은 방화벽 문제가 있는 경우 이를 잘 알고 있어야 한다고 생각합니다.

번들로 묶을 때의 문제는 해당 dll 중 하나를 업데이트해야 하는 경우 전체 패키지를 업데이트해야 한다는 것입니다... Silverlight 모델은 캐시 또는 대역폭 친화적이지 않습니다...

나는 Blazor에 번들링을 사용하는 것을 제안하지 않습니다. 번들 기능을 제외하고 Silverlight 팀이 방화벽 문제를 피하기 위해 xap 파일을 사용하고 있었을 수도 있습니다. 물론 추측일 뿐입니다.

".net"을 확장자로 유지

우리는 이제 이것에 대한 자전거 보관소 의 영역에 잘 들어왔습니다. 따라서 이에 문제가 있는 실제 방화벽 제품의 구체적인 예 를 구체적으로 요청합니다.

특정 제품은 아닌 것 같아요

그럼에도 불구하고 특정 제품의 예와 어떤 구성에서 이런 일이 발생하면 도움이 될 것입니다.

@SteveSandersonMS 그 부분을 이해했습니다. 요점은 하나의 특정 바이러스 백신/방화벽에 대한 문제를 수정해도 다른 모든 백신/방화벽에는 적용되지 않는다는 것입니다. 각각에 고유한 경험적 데이터베이스, 설정이 있다는 것을 알고 있기 때문입니다. 모든 것에 대한 명명 규칙과 서명 규칙을 모두 포함할 수 있는 유일한 경우는 다음과 같습니다.

  1. 평소와 같이 집회에 서명하고;
  2. 이름이 _default_ 블랙리스트에 없는지 확인하십시오.

@SteveSandersonMS ESET에서 NOD32를 사용할 때 몇 가지 문제를 보았고 활성 스캐너가 일부 바이너리 파일을 자동으로 다운로드하는 것을 차단하는 것을 보았습니다. 이는 표면적으로는 디지털 서명이 없는 Dynamic Link Libraries인 것 같습니다.

@grahamehorner 정보 감사합니다. 대략적인 재현 단계가 무엇인지 알고 있습니까? NOD32를 (일회용) Windows 시스템에 설치했다면 https://blazor-demo.github.io/를 열 수 없을 정도로 충분합니까? 아니면 추가 구성이 필요한가요?

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

파일 차단 프로필 을 사용하면 차단하거나 모니터링하려는 특정 파일 형식을 식별할 수 있습니다. 대부분의 트래픽(내부 네트워크의 트래픽 포함)의 경우 위협을 전달하는 것으로 알려져 있거나 업로드/다운로드에 대한 실제 사용 사례가 없는 파일을 차단하고 싶을 것입니다. 현재 여기에는 배치 파일, DLL, Java 클래스 파일, 도움말 파일, Windows 바로 가기(.lnk) 및 BitTorrent 파일이 포함됩니다.

@SteveSandersonMS 저는 NOD32를 원격으로 관리하는 IT 관리 팀과의 회의를 기다리고 있습니다. NOD32 시스템에서 다음 내용을 알리는 자동화된 이메일을 받았기 때문에 변경/사용자 정의된 내용(있는 경우)을 찾기 위한 구성입니다. 신뢰할 수 없는 소프트웨어를 다운로드/설치하여 기업 보안 정책을 위반했을 수 있습니다. 추가 정보를 찾거나 알게 되면 다시 게시하겠습니다.

.dll이 .nupkg로 패키징되고 다운로드 후 blazor에 의해 언팩/로드된 경우 .dll이 차단될 수 있는지/차단될 수 있는지 궁금합니다.

현재 여기에는 배치 파일, DLL, Java 클래스 파일, 도움말 파일, Windows 바로 가기(.lnk) 및 BitTorrent 파일이 포함됩니다.

그것이 내가 말하는 것입니다... 제품에 관계없이 일반(일반적으로 IT 기반이 아닌) 회사의 IT 관리자가 차단할 파일 형식의 _default_ 목록입니다...

BTW, WPF 팀에서 .xap으로 작업한 사람이 있다면 그 당시에 "WPF in Browser"를 출시하고 _정확히_ 동일한 문제에 직면했을 때 겪었던 일을 누구에게나 명확하게 말할 수 있습니다.

_모든__ 바이러스 백신 소프트웨어가 해당 확장에 대해 _신뢰_할 때까지 시간이 좀 걸렸습니다.

나는 같은 문제가 있었다. 기업 네트워크 내부에서 샘플을 테스트했습니다. DLL 파일이 차단된 것으로 보고되었습니다. 이것은 기본적으로 이것을 동료에게 데모하는 것을 불가능하게 만듭니다. DLL 파일을 차단 해제하는 것은 아마도 시작이 아닐 것입니다.

공식 컨벤션 페이지를 보니...
http://webassembly.github.io/spec/core/binary/conventions.html

바이너리 형식의 WebAssembly 모듈을 포함하는 파일의 권장 확장자는 ".wasm"이고 권장 미디어 유형은 "application/wasm"입니다.

따라서 가장 먼저 할 일은 파일의 이름을 .wasm으로 바꾸는 것 같습니다. 파일이 여전히 차단되어 있으면 방화벽을 차단 해제해야 합니다.

파일 이름을 .wasm 으로 바꾸는 것은 좋은 생각이 아니라고 생각합니다. DLL은 Wasm 모듈이 아니며 Mono Wasm 런타임에 의해 (현재) 해석되는 .NET 어셈블리입니다( 더 읽기 ). Mono 런타임만 Wasm 모듈입니다. 그러나 특히 엔터프라이즈 시나리오에서 방화벽 때문에 DLL 이름을 다른 이름으로 바꾸는 것에 투표합니다.

Antivirus AVG 버전 18.1.3044에서 https://blazor-realworld.azurewebsites.net/ 을 방문하려고 할 때 DLL 파일도 차단했습니다.

파일 이름을 .wasm으로 바꾸는 것은 좋은 생각이 아니라고 생각합니다. DLL은 Wasm 모듈이 아니며 Mono Wasm 런타임에 의해 (현재) 해석되는 .NET 어셈블리입니다(더 읽기). Mono 런타임만 Wasm 모듈입니다.

문제는 기존 확장이 적용되지 않기 때문에 "다른 것" 확장이 발생하는 반면(브라우저 샌드박스에서 직접 해석되는 .NET MSIL 페이로드는 보안의 새로운 개념임) wasm은 이미 기업 방화벽에서 허용됩니다.

.xap의 처리는 wasm과 달리 브라우저 보안 샌드박스를 우회하기 때문에 보안 관점에서 좋은 참조가 아닐 수 있습니다.

예, DLL 파일에는 MSIL이 포함되어 있으므로 기술적으로 사실이며 엄격하게 바이너리 wasm이 아닙니다. 그러나 PE 형식의 일부를 공유하고 어쨌든 내부적으로 대부분 다르지만 기본 Win32 DLL의 이름을 따서 명명되었기 때문에 DLL이라는 이름이 지정되었습니다. 같은 줄을 따라 wasm은 Webassembly의 "네이티브" 라이브러리 형식이며 관리되는 라이브러리의 이름을 DLL:s 로 지정하는 것과 같은 이유로(내부적으로는 기본 DLL:s와 다름에도 불구하고) 이해가 될 수 있습니다. 이름을 wasm으로 지정합니다. 보안 관점에서 DLL은 "로컬 실행"을 의미하는 반면 wasm은 "브라우저 실행"을 의미합니다. wasm 형식을 준수하기 위해 아마도 .NET 어셈블리를 데이터로 포함하여 마법 같은 초기 문자열과 모두를 사용하여 유효한 wasm으로 만들 수 있습니다.

여기서 아이디어는 유사점이 있다는 것입니다. wasm은 MSIL에 대한 PE가 MSIL에 대한 것인 래퍼 컨테이너 형식입니다. 선례:

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

.NET 바이너리 형식은 Windows PE 파일 형식을 기반으로 합니다. 실제로 .NET 클래스 라이브러리는 호환되는 Windows PE이며, 언뜻 보기에는 Windows DLL(동적 연결 라이브러리) 또는 EXE(응용 프로그램 실행 파일)처럼 보입니다. 이것은 기본 실행 바이너리로 가장하고 동일한 처리(예: OS 로드, PE 도구)를 얻을 수 있는 Windows에서 매우 유용한 특성입니다.

Blazor 모델이 기존 방화벽에서 100% 제대로 작동하지 않으면 거의 쇼 스토퍼입니다. 자바스크립트처럼 모든 방화벽을 쉽게 통과해야 합니다. 내가 방화벽 관리자라면 고유한 IL 형식이 있는 각각의 새 언어에 대해 새 화이트리스트 항목을 추가하고 싶은지 잘 모르겠습니다.

Blazor 모델이 기존 방화벽에서 100% 제대로 작동하지 않으면 거의 쇼 스토퍼입니다.

@SteveSandersonMS 전에 답변한 적이 있다면 죄송합니다. 하지만 이것이 해결 가능하다고 생각하십니까?

물론! 필요에 따라 URL 또는 콘텐츠 형식을 변경합니다.

이것이 다음 이정표에 대한 우선 순위를 지정할 수 있다면 좋을 것입니다. 잠재적인 기업 보안 차단으로 인해 방해가 될 것이라는 사람들의 두려움을 진정으로 완화할 수 있습니까?

@JonnyGibson 스티브가 앞서 언급했듯이, 우리는 이 문제를 해결할 계획이지만 Blazor가 실험 프로젝트라는 정신에서 우리는 현재 잘 이해되지 않는 작업의 우선 순위를 지정하고 있습니다. 우리는 이 문제를 해결하는 방법을 알고 있다고 확신합니다.

다음은 또 다른 예입니다.
blazor antivirus

아마도 솔루션은 방화벽과 AV가 어떤 확장이 결정되든 화이트리스트에 지원을 추가할 때까지 개발자가 앱의 확장을 정의하도록 하는 것입니다.

개발자가 확장을 정의하도록 허용하는 것에 대한 내 이전 의견과 관련하여 개발자는 방화벽 및 바이러스 백신 동작을 테스트하기 위해 다른 확장을 가진 앱을 만들 수도 있습니다.

@jonparker @torhovland 차단될 수도 있고 차단되지 않을 수도 있는 확장을 정의하는 것과는 반대로 차단되지 않도록 하는 방법을 찾아야 한다고 생각합니다. 어느 누구도 (가능성이 높은) 일부 시나리오에서 웹 사이트를 차단하는 프레임워크를 사용하지 않을 것입니다.

확장 프로그램을 제거하는 아이디어는 합리적으로 보이며 최대한 빨리 시도해야 합니다. 나는 이것이 쇼스토퍼(showstopper)가 되는 것만큼 제기된 다른 문제를 본 적이 없습니다.

확장 프로그램을 제거하는 아이디어는 합리적으로 보이며 최대한 빨리 시도해야 합니다.

수정 사항을 테스트하려면 가능한 한 많은 문제가 있는 환경을 재현하거나 조사할 수 있어야 합니다. 이를 돕기 위해 Blazor 앱이 차단되는 문제가 발생하는 환경에 대한 세부 정보를 계속 제공해 주시기 바랍니다. 이미 보고해 주신 모든 분들께 감사드립니다!

나는 이것이 쇼스토퍼(showstopper)가 되는 것만큼 제기된 다른 문제를 본 적이 없습니다.

장기적으로 우리는 이 문제에 대해 그다지 걱정하지 않습니다. 우리는 어떤 형태의 앱 패키징 또는 앱 변환을 통해 이 문제를 처리할 수 있을 것이라고 확신합니다. 그러나 우리는 특정 문제가 무엇인지에 대한 더 많은 데이터를 얻을 때까지 솔루션 설계를 보류하고 있습니다.

WebSense는 회사 네트워크에서 웹 액세스를 제어하는 ​​데 사용하는 도구입니다. Blazor를 차단하는 문제는 명시적인 실행 파일 다운로드 차단일 뿐이라고 확신합니다.
https://www.websense.com/content/support/library/web/hosted/admin_guide/exten_block.aspx

AVG가 내 blazor 프로젝트를 차단하는 것 같습니다. https://files.gitter.im/aspnet/Blazor/Oc8w/image.png
blazor antivirus

AVG가 내 웹 사이트를 차단한 경험도 있음을 확인할 수 있습니다. 내 친구는 AVG를 비활성화하지 않고 웹 사이트에 액세스할 수 없습니다. 내가 아는 한 그는 기본 바이러스 백신 설정을 사용했습니다.

DLL 확장은 문제가 되지 않습니다... 작업 중인 AOT 컴파일로 DLL이 배포되지 않습니다. DLL이 더 빠른 개발 루프에 사용된다는 것을 이해하기 때문입니다. 이것에 시간을 보내지 말고 AOT가 작동하도록 하는 것이 목표입니다.

우물... #897은 중복이었습니다.

이것은 내 오류였습니다.
image

명령줄(기본값 "dll")에서 가져올 수 있는 UpdateIndex의 매개변수로 확장자를 설정할 수 있습니다. https://github.com/aspnet/Blazor/blob/dev/src/Microsoft.AspNetCore.Blazor .Build/Core/IndexHtmlWriter.cs

이에 대해 PR을 보내면 고려됩니까?

이 문제를 수정하십시오. 기업에서 테스트하지 못하도록 차단하는 유일한 항목입니다.

rewrite url 모듈과 함께 IIS를 사용하는 경우 빠른 수정 제안:

  • 출력에서 모든 ".*.dll 파일을 .wasmnet 또는 무엇이든 변경할 수 있습니다. 스크립트 태그의 내용을 편집할 것입니다(https://docs.microsoft.com/en-us/iis/extensions/url-rewrite -module/creating-outbound-rules-for-url-rewrite-module)
  • 이 확장자를 dll로 다시 작성하여 좋은 파일이 브라우저로 보내지도록 합니다(또는 배포 후 dll 파일의 이름을 바꿉니다).

.net core https://docs.microsoft.com/fr-fr/aspnet/core/fundamentals/url-rewriting?view=aspnetcore-2.1&tabs=aspnetcore2x 를 사용하여 이 작업을 수행할 수 있습니다.

또 다른 아이디어: 이러한 방화벽 및 보안 제품의 대부분은 .zip 파일을 차단하지 않습니다. 실제로 일부 기업 네트워크에서 차단된 .dll 파일을 다운로드하려고 할 때 여러 번 동일한 파일의 .zip 버전이 거의 항상 차단을 통과한다는 것을 알았습니다.

따라서 MyLib.dll을 MyLib.zip(zip 내부에 단일 MyLib.dll 파일 포함)으로 패키징할 수 있습니다. 문제는 브라우저가 기본적으로 압축된 아카이브의 내용을 압축 해제하기 위해 일부 .NET 어셈블리를 사용하는 WASM/MONO인 경우에 비해 파일 내용의 압축을 더 빨리 풀 수 있다는 것입니다. 압축 풀기에는 최소 2x-3x 속도가 느려집니다.

그러나 해결책이 있습니다. MyLib.dll 파일을 ZERO 압축을 사용하여 MyLib.zip으로 패키징한 다음 파일을 압축하도록 웹 서버에 맡길 수 있습니다(파일을 요청할 때 클라이언트 브라우저가 지원하는 압축 형식 사용). 브라우저가 해당 파일을 다운로드하면 Mono/WebAssembly에 도달하기 전에 기본적으로 수신된 콘텐츠의 압축을 풉니다. 따라서 Mono 런타임은 .zip 파일(이 시점에서 원래 압축되지 않은 zip 아카이브)의 압축을 풀면 됩니다.

위의 내용으로 인해 혼란스러워하는 사람이 없기를 바랍니다. 압축되지 않은 컨테이너 형식으로 .zip을 사용하는 것이 좋습니다. 그런 다음 웹 브라우저와 웹 서버가 요청된 파일에 대해 정상적으로 수행하는 방식으로 압축 및 압축 해제를 처리하도록 합니다. 구체적인 예를 들면 다음과 같습니다.

  1. 2MB mscorlib.dll은 2MB mscorlib.zip으로 압축됩니다(압축을 NONE으로 설정했습니다).
  2. 웹 브라우저는 mscorlib.zip을 요청합니다(압축 방법이 지원되는 일반적인 Accept-Encoding 헤더 전송).
  3. 웹 서버는 mscorlib.zip의 내용을 700MB로 압축하여 서버로 전송하므로 패키지 크기는 오늘날과 동일합니다)
  4. 웹 브라우저(Chrome 또는 Edge 등)는 기본적으로 콘텐츠의 압축을 풀고 Mono 런타임은 원본 2MB mscorlib.zip 파일을 수신합니다. 이 파일은 내부 압축이 사용되지 않기 때문에 WASM Mono가 원본 .dll로 정말 빠르게 압축을 풀 수 있습니다. 그 원래 zip 아카이브.

따라서 이는 버킷에 포함할 또 다른 제안일 뿐입니다. 다른 아이디어에 대한 내 생각은 다음과 같습니다.

  • MyLib.dll이 MyLib 또는 이전의 MyLib_dll 제안이 되는 것처럼 확장자를 제거하는 것으로 충분하기를 바랍니다.
  • 또한 .NET 어셈블리가 PE 형식을 사용하고 확장자로 .dll이 제공된 것과 같은 방식으로 어셈블리를 .wasm 파일 내부의 데이터로 "패키징"할 수 있어야 한다는 데 동의합니다. 따라서 내부적으로 IL을 데이터로 저장하는 MyLib.wasm을 가질 수 있습니다. 여기서 내가 볼 수 있는 유일한 단점은 실제 AOT 컴파일이 있을 때 .wasm 파일에 IL 또는 기본적으로(WASM) 컴파일된 코드가 포함되어 있는지 시각적으로 구분하기 어려울 수 있다는 것입니다.

.dll 는 적절한 확장자가 되며 기본값으로 유지되어야 합니다. 확장자를 .zip 로 변경하여 파일 의도를 숨기는 것은 혼란을 일으키기 때문에 최적의 솔루션이 아닙니다. 확장자를 전혀 사용하지 않고 파일 이름을 somedllname_v1_0_0_4321_ab5e8d5b97d141aca3c54776e82d2355 로 지정하는 것이 더 나을 것입니다.
(즉, 프로젝트 이름, 파일 버전 및 SHA-256 해시)

더 큰 문제는 현재의 AV 스캐너가 (경험적으로) 추가 코드를 가져오는 루틴을 감지한다는 것입니다. AV 공급업체가 .wasm 지원에 적응할 때까지 이 문제에 대한 실제 솔루션은 없습니다. 따라서 AV 공급업체에 연락하고 버그로 보고하여 수정할 수 있도록 하는 것이 좋습니다.

@MovGP0에 100% 동의합니다. AV 공급업체는 소프트웨어를 업데이트해야 합니다. 그들은 서로 다른 알고리즘을 사용하여 악성 코드를 탐지하며 이러한 알고리즘은 바이러스를 차단하고 합법적인 소프트웨어를 허용할 만큼 충분히 똑똑해야 합니다. 나는 모든 최신 AV 스캐너가 모든 아카이브, zip, 7z, rar 등의 내용을 확인한다고 믿습니다. 파일 이름 확장명을 변경하거나 유사 압축을 하는 것은 장기적인 해결책이 아닙니다.

차단이 레거시 이유 때문에 이것이 문제라는 것은 어리석은 것처럼 보입니다. Blazor for DLL에는 두 가지 시나리오가 있습니다.

  1. 브라우저에서 해석되는 IL 코드: 이 경우 DLL의 IL 코드는 원시 데이터이며 브라우저가 처리하는 JPG 또는 XML 파일보다 더 위협적이지 않습니다. 다운로드한 IL이 완전히 해석되고 있기 때문입니다. 보안 제품은 웹사이트가 처리하는 GIF, XML 또는 TXT 파일과 관련하여 더 이상 관련이 없습니다.

또는 (미래에)

  1. IL 코드는 AOT를 .wasm으로 컴파일했습니다. 이 경우 IL 코드는 .WASM을 생성하며 유일한 문제는 이러한 보안 제품이 .wasm 파일을 처리하는 방법입니다.

"패킹"에 대한 또 다른 요점은 이것이 바로 많은 자바스크립트 프레임워크가 이미 서버에 대한 요청을 줄이기 위해 수행하는 작업이라는 것입니다. 일부 서버 측 스크립트는 단일 파일에 여러 개의 개별 스크립트를 동적으로 결합하도록 합니다. 저는 개인적으로 초기 서버 요청을 줄이기 위해 20개의 작은(5k) DLL을 동적으로 결합할 수 있는 지능형 서버 측 핸들러를 보고 싶습니다.

그러나 Blazor 팀은 현재 우리의 피드백을 받았고 합리적인 조치를 취하거나 옵션을 제공할 것이라고 생각합니다.

저는 모든 사람이 보안 제품을 업데이트할 때까지 기다려야 한다는 견해가 통하지 않는다는 점을 지적할 것입니다. 왜냐하면 네트워크 인프라의 구성을 현실적으로 변경하지 않는 것은 기존 대기업뿐 아니라 제품 뿐이기 때문입니다. 이것은 단지 AV 스캐너에 관한 것이 아니라 News Corporation 또는 Bhp Billiton과 같은 대기업의 IT 부서 직원에게 네트워크 구성을 변경하도록 지시하는 것이기 때문에 Blazor 사용에 큰 타격을 줄 것입니다. 문화가 변하고 있지만, 이것이 Blazor 문제를 일으키더라도 단순히 신경 쓰지 않을(또는 적극적으로 웃을) 부서에 여전히 많은 직원이 있습니다 ☹.

  • 나는 모든 최신 AV 스캐너가 모든 아카이브, zip, 7z, rar 등의 콘텐츠를 확인한다고 믿습니다.
    지난 10년 동안 내 개인적인 경험은 .zip 형식일 때 모든 것이 일반적으로 괜찮다는 것입니다. 파일이 .exe 또는 .dll인 경우 일반적으로 차단됩니다. zip 아카이브 내에서 대부분의 제품은 zip 아카이브 내에서 맬웨어의 알려진 실제 서명을 감지한 경우에만 zip 파일을 차단합니다(단지 내부에 .dll이 있기 때문이 아님). 그러나 모든 제품이 다르기 때문에 여기에 어떠한 보장도 없음을 인정합니다.
    보낸 사람: Andrzej-W [email protected]
    보낸 날짜: 2018년 6월 6일 수요일 오전 5:38
    받는 사람: aspnet/Blazor [email protected]
    참조: jiggyswift [email protected] ; 댓글 [email protected]
    제목: Re: [aspnet/Blazor] .dll(#172)로 끝나지 않도록 .NET 어셈블리의 URL을 변경하는 것이 좋습니다.

@MovGP0 https://github.com/MovGP0 에 100% 동의합니다. AV 공급업체는 소프트웨어를 업데이트해야 합니다. 그들은 서로 다른 알고리즘을 사용하여 악성 코드를 탐지하며 이러한 알고리즘은 바이러스를 차단하고 합법적인 소프트웨어를 허용할 만큼 충분히 똑똑해야 합니다. 나는 모든 최신 AV 스캐너가 모든 아카이브, zip, 7z, rar 등의 내용을 확인한다고 믿습니다. 파일 이름 확장명을 변경하거나 유사 압축을 하는 것은 장기적인 해결책이 아닙니다.


당신이 댓글을 달았기 때문에 이것을 받는 것입니다.
이 이메일에 직접 회신하거나 GitHub https://github.com/aspnet/Blazor/issues/172#issuecomment-394834055 에서 확인하거나 https://github.com/notifications/unsubscribe-auth/AmF6aIkiXWAVe282A0YSh_a7bgmGPGN7 스레드를 음소거합니다.

hello.exe 를 다운로드하는 mono wasm 예제 사이트 를 탐색한 후 Corporate Security Team의 두 사람이 내 책상으로 왔습니다. "Symantec Endpoint Protection"에 의해 선택되었다고 생각합니다.

고마워 해리. 그들이 당신을 문밖으로 안내하기 전에 상자에 모든 것을 포장할 시간을 주었습니까? 아직 최고의 이야기.

보낸 사람: Harry McIntyre [email protected]
보낸 날짜: 2018년 6월 7일 목요일 오후 8시 36분
받는 사람: aspnet/Blazor [email protected]
참조: jiggyswift [email protected] ; 댓글 [email protected]
제목: Re: [aspnet/Blazor] .dll(#172)로 끝나지 않도록 .NET 어셈블리의 URL을 변경하는 것이 좋습니다.

Mono wasm 예제 사이트 https://nam01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.hipbyte.com 을 탐색한 후 Corporate Security Team에서 두 사람이 내 책상으로 왔습니다.


당신이 댓글을 달았기 때문에 이것을 받는 것입니다.
이 이메일에 직접 답장하고 GitHub https://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Faspnet%2FBlazor%2Fissues%2F172%23issuecomment-395374377&data=02 에서 확인하세요. https://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub한다. COM % 2Fnotifications % 2Funsubscribe-인증 % 2FAmF6aG9lvmy2g93BQQmI-5mbrGICanCxks5t6QIPgaJpZM4SUpej 및 데이터 = 02퍼센트 7C01 % 7C % 7Cf21af207f881447e8d5d08d5cc627621 % 7C84df9e7fe9f640afb435aaaaaaaaaaaa % 7C1 % 7C0 % 7C636639645609018105 및 SDATA = yZhLQXXqqp0hLEtD3mTowdoI4EpBu5qNNR0UI4tZDm8 % 및 3D = 0 예약 .

유용할 수 있습니다.

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 에서

파일이 아카이브(예: .zip 또는 .rar 아카이브 파일)인 경우 시스템은 가장 바깥쪽 아카이브 파일(레벨 0) 아래에 있는 중첩 파일의 최대 3개 레벨을 검사할 수 있습니다. 고급 접근 제어 설정을 저장할 최대 파일 크기만큼 아카이브 파일을 검사할 수 있습니다.
개별 파일이 차단 작업이 있는 파일 규칙과 일치하는 경우 시스템은 개별 파일뿐만 아니라 전체 아카이브를 차단합니다. 또한 시스템은 지정된 중첩 수준을 초과하거나 콘텐츠가 암호화되거나 검사할 수 없는 아카이브를 차단할 수 있습니다.

다른 링크("파일 형식 기능"으로 스크롤):
https://supportcenter.checkpoint.com/supportcenter/portal?eventSubmit_doGoviewsolutiondetails=&solutionid=sk105318&js_peid=P-14d3e69bf07-10000

https://remibou.github.io/Change-Blazor-DLL-extension-with-ASPNET-Core/에 설명된 해결 방법을 찾았습니다. 모든 경우와 AV에 도움이 되는 것은 아니지만 출발점입니다.

@RemiBou man... 굉장하네요 :) URLRewrite를 잘 활용하세요! 👍

dll 확장 교체 주제에 대해 github 페이지, cloudflare 및 아마도 대부분의 CDN이 이미 "application/wasm"에 대한 압축을 처리하고 있지만 "application/"에 대한 압축은 처리하지 않기 때문에 wasm 확장(기술적으로 정확하지 않더라도)을 추진하고 싶습니다. octet-stream"이므로 기본 Blazor 앱의 가중치는 brotli로 압축된 mono.wasm만 있는 약 3.2MB입니다. 결국 Blazor 라이브러리는 AOT 컴파일이 제자리에 있을 때 이미 어쨌든 wasm이 될 것입니다. 그렇지 않습니까?

방금 wasm 확장자를 사용하여 @RemiBou 트릭을 테스트하고 dll을 gh-page로 푸시하기 전에 dll의 이름을 변경했습니다. 이제 콜드 새로 고침은 1.9MB가 되어야 합니다. 훌륭합니다! @RemiBou 감사합니다!!

그러나 내 Avast 바이러스 백신은 처음에 모든 가짜 wasm 파일이 DRep에 감염되었고 @jorisvergeer 와 동일한 경고 창을 얻었기 때문에 미쳤습니다. 빠른 검색 후 나는 최근에 만든 하위 도메인보다 평판이 더 좋은 사이트에서 가짜 wasm 라이브러리를 다운로드하면 문제를 해결할 수 있다고 생각하지만 지금은 추측만 하고 있습니다.

클라이언트 측 blazor 앱이 기업 내부에서 어떻게 실패하는지에 대한 예는 첨부된 PDF 파일을 참조하십시오. 이것은 우리가 통제할 수 없는 무언가에 좌우되기 때문에 개발자의 관점에서 보면 답답한 문제입니다.

dll을 wasm 파일로 미리 컴파일한 다음 대신 다운로드할 수 있다면 정말 좋을 것입니다. (효과가 있기를 바랍니다)

403금지.pdf

이전 게시물의 403 금지 메시지는 zscaler 방화벽에 의해 생성되었습니다.

향후 스프린트에서 고려될 수 있도록 이 문제에 가시성과 우선 순위를 부여하는 가장 좋은 방법은 무엇입니까?

@rynowak @SteveSandersonMS @mkArtakMSFT 우리는 이에 대한 솔루션이 있는지 확인해야 하므로 blazor-wasm 이정표로 이동합니다.

저는 지금 zScaler에 의해 차단되는 dll을 해결하기 위해 사용하는 솔루션을 설명하는 문서를 만들었습니다.

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

방화벽 제조업체가 향후 몇 년 동안 wasm 파일을 안전한 것으로 받아들이는 데 시간이 걸릴 수 있으므로 WASM 파일에 대해 유사한 솔루션을 고려해야 할 수도 있습니다.

저는 PublishSingleFile/PublishTrimmed/TargetFramework=wasm이 정말 기대되기 때문에 서비스 워커에서 관리할 비교적 작은 파일이 하나만 있습니다.

당신의 생각?

고마워 댄!
나는 이것이 약간의 주목을 받고 있다는 것에 감사한다.
임시 솔루션을 https://github.com/aspnet/AspNetCore/issues/5477 에 게시했습니다.
어떤 식으로든 도움이 되기를 바랍니다.

보낸 사람: Daniel Roth [email protected]
보냄: 2019년 10월 11일 금요일 오전 10:33
받는 사람: aspnet/AspNetCore [email protected]
참조: juchytil [email protected] ; 댓글 [email protected]
제목: Re: [aspnet/AspNetCore] .dll로 끝나지 않도록 .NET 어셈블리의 URL을 변경하는 것을 고려하십시오(#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 및 예약 = 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 및 예약 = 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%2BUI2GBD48%o3 솔루션으로 이동해야 합니다.


당신이 댓글을 달았기 때문에 이것을 받는 것입니다.
이 이메일에 직접 답장하고 GitHub https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Faspnet%2FAspNetCore%2Fissues%2F5477%3Femail_source%3Dnotifications%26email_token 에서 확인하세요. https://eur01.safelinks.protection.outlook.com/?url= HTTPS % 3A % 2F % 2Fgithub.com % 2Fnotifications % 2Funsubscribe-% 2FAEBYRE2MQUF65CHXQD54OWDQOCMCVANCNFSM4GK4V5LQ 인증 및 데이터 = 02% 7C01 % 7C % 7Cecf83fca357f4abe690d08d74e604c75 % 7C84df9e7fe9f640afb435aaaaaaaaaaaa % 7C1 % 7C0 % 7C637064047810643323 및 SDATA = yx154tNWkGvXlXbVJNjvswed9hG0zr91HFqIhMVLCfo % 및 3D = 0 예약 .

이 문제를 테스트할 수 있도록 여기에 내 웹 호스팅 공급자의 이름을 게시하도록 요청한 Daniel Roth의 블로그 요청에 대한 후속 조치입니다. 블로그 댓글은 여기에서 찾을 수 있습니다:- https://devblogs.microsoft.com/aspnet/asp-net-core-and-blazor-updates-in-net-core-3-0/#comment -955

문제의 호스팅 제공업체는 infinityfree.net입니다. 그들은 무료이므로 쉽게 시도 할 수 있습니다!

기본적으로 사이트를 업로드할 때 서버는 _framework\bin\ 폴더에서 DLL의 약 절반을 삭제합니다. 원래는 뭔가 잘못되었다고 생각하고 계속해서 누락된 파일을 업로드하려고 했습니다. 결국 그들은 마치 그들의 서버가 새 파일을 검사하는 바이러스를 포기한 것처럼 "고착"하는 것처럼 보였고 하루가 지난 후에도 여전히 거기에 있습니다(비록 결국에는 소탕될 것입니다).

어쨌든 DLL 이름 바꾸기와 같은 적절한 솔루션에 대한 투표를 추가하십시오.

@andyste1 정보 감사합니다. 파일명을 변경해도 삭제되지 않는지 확인하셨나요? 호스팅 회사가 이름이 아닌 콘텐츠를 기반으로 이 작업을 수행하는 경우 이름을 바꾸는 것이 반드시 해결책은 아닙니다.

이름을 바꾸는 것은 별로 도움이 되지 않을 수 있습니다. 이를 달성하기 위해 이미 해결 방법을 사용할 수 있습니다.
저에게 문제는 파일의 PE 형식입니다. 바이러스 백신 프로그램인 Sophos는 파일의 내용도 검사하기 때문에 이름을 바꿀 때마다 파일을 차단합니다. 운 좋게도 Sophos는 HTTPS(HTTP 아님)를 통한 DLL(PE 형식) 파일 다운로드를 허용합니다.

@lertoo 우리는 크기를 줄이기 위해 어셈블리에서 PE 메타데이터를 잠재적으로 제거하는 것에 대해 논의하고 있지만 이 문제에도 도움이 될 수 있습니다.

이 문제의 Norton 바이러스 백신 버전: https://forums.asp.net/t/2161027.aspx

파일 확장자뿐만 아니라 파일 헤더도 일부 편집증 소프트웨어에 문제를 일으킬 가능성이 매우 높습니다. 난독화는 헤더에 문제가 있는 경우 도움이 되지 않습니다. 단, Blazor VM을 시작하는 JS가 메모리 내에서 수동으로 교체하지 않는 경우가 있지만 이는 긴 시간입니다.

현재 해결 방법은 CI/CD 파이프라인에서 각 DLL의 Base64 인코딩 버전을 제공하고, 서비스 작업자를 사용하여 DLL에 대한 방화벽에서 403을 감지하고, DLL 텍스트 파일의 Base64 버전을 다운로드하고, Base64를 다시 브라우저에서 캐싱하기 전에 서비스 워커의 DLL.

WASM 파일이 나에게 문제가 없는 것처럼 보이기 때문에 DLL을 WASM 파일로 변환할 수만 있다면 문제가 사라지는지 궁금할 것입니다. 하지만 모든 방화벽에는 해당되지 않을 수 있습니다.

또 다른 Blazor WebAssembly 오탐지:

image

저는 2018년 초부터 이 문제가 해결되기를 기다리고 있었습니다. :) 저는 blazor를 사랑합니다. 하지만 dll을 변경할 수 없다면 이것은 잠재적인 쇼 스토퍼처럼 보였습니다.

@JonnyGibson 기다려 주셔서 감사합니다! 올해 5월에 출시될 예정인 릴리스에서 이 문제에 대한 해결 방법을 마련하기 위해 노력하고 있습니다.

이것은 꽤 긴 문제이므로 여기에 이 ​​모든 것을 요약하려고 했습니다.

바이러스 백신

  • NOD32(ESET)
  • AVG v. 18.1.3044(+3)
  • 웹 트래픽 스캐닝
  • Avast (+3)
  • 시만텍 엔드포인트 보호
  • z스케일러

제안서 이름 바꾸기

  • .블레이저(+35)
  • .bin(+3)
  • .lib
  • .라즘 (+6)
  • .net (+14)
  • .wasm (-8)
  • [커스텀] (+1)
  • [없음]

사람들이 사용하는 해결 방법

  • 확장자 이름 바꾸기
  • BASE64 인코딩 DLL

일반 참고 사항

  • .DLL 및 .EXE는 많은 기업이 정책으로 방화벽 수준에서 차단하는 확장입니다.
  • 바이러스 백신 소프트웨어에서도 이름이 변경된 확장이 보고되었다는 보고가 있습니다.

@mkArtak
내 다운로드를 차단하는 zScaler를 요약의 어딘가에 포함할 수도 있습니다.

테스트에 대한 한 가지 접근 방식은 zScaler에 문제가 있다는 것을 기억하지 못하기 때문에 모든 실행 파일을 wasm 파일로 변환하는 것입니다.

클라이언트 측 blazor가 이러한 문제를 해결하고 초기 다운로드 시간이 더 빨라질 때까지 임시로 Angular로 이동했습니다.

나는 클라이언트 측 blazor가 작동하도록 하는 데 많은 시간을 쏟았고 플랫폼이 좀 더 성숙할 때까지 기다리기로 결정했습니다.
https://github.com/jucchytil/CSBNotes/blob/master/Notes.md

@javiercn 여기에서 파일 확장자 이름 바꾸기 작업을 추적하고 이에 관해 안티바이러스 제공업체에 후속 조치를 취하기 위해 별도의 문제를 제출하겠습니다.

조치 필요

🎫
방금 Blazor WASM 응용 프로그램을 차단하는 모든 특정 소프트웨어를 수집하려고 하는 새로운 문제 를 만들었습니다. https://github.com/dotnet/aspnetcore/issues/19552 에 설명된 대로 귀하의 사례와 관련된 정보를 제공하십시오.

참고로 github 페이지 및 cloudflare와 같은 CDN은 dll 파일에 대해 압축되지 않은 버전을 제공하는 동안 기본적으로 wasm 확장자로 자산을 압축합니다. 제 기억이 맞다면 Azure CDN은 같은 방식으로 작동해야 합니다.

우리는 오늘 이것을 경험했습니다. DLL 다운로드 제한을 해제하는 것은 선택 사항이 아닙니다. 우리뿐만 아니라 고객도 해당 제한을 제거할 가능성이 매우 낮습니다. 따라서 이 문제에 대한 수정이 정말로 필요합니다. 그렇지 않으면 Blazor 프로젝트가 물에 잠겨 있습니다(고용주가 서버 측 사용을 꺼림).

방화벽이 Palo Alto라고 생각합니다.

@mrpmorris https://github.com/dotnet/aspnetcore/issues/19552 에 세부 정보를 입력할 수 있습니다. 여기에서 공급업체와 협력할 수 있도록 정보를 수집하고 있습니다.

@mrpmorris 가 확장을 변경하여 시나리오의 문제를 해결했습니까?

안녕하세요 @javiercn

방금 해당 문제를 업데이트했습니다. https로 전환하는 것이 우리에게 효과가 있었던 것 같습니다. 이는 의미가 있습니다. 우리는 고객이 동일한 예외를 기꺼이 허용할지 확신할 수 없습니다.

이름 변경 옵션을 확인하겠습니다. Blazor가 .wasm 확장자 또는 다른 것과 함께 작동하도록 하는 방법에 대한 지침에 대한 링크가 있습니까? 현재 저는 웹 서버 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Azure Web App으로 바로 Publish 를 선택하고 있습니다.

@mrpmorris 여기에서 지침을 확인할 수 있습니다.
https://github.com/dotnet/aspnetcore/pull/19558#issuecomment -594461263

@mrpmorris 이러한 지침은 최신 3.2.0-preview2 빌드에만 적용되며 3.2.0-preview1에서 업그레이드하려면 아직 게시하지 않은 단계를 사용하여 약간의 작업이 필요합니다. 이번 달 말에 출시될 때까지 기다리시면 됩니다.

@danroth27 아직 미리보기2를 게시하지 않은 것 같은데... :)

원하는 경우 여기 의 지침에 따라 야간 빌드로 이를 시도할 수 있습니다.

그렇게 하기로 선택한 경우 전후에 너겟 패키지 캐시를 지우는 것이 좋습니다. 캐시를 지우면 전체 시스템(해당 시스템의 모든 앱)에 영향을 미친다는 점을 고려하십시오.

p2 빌드가 출시될 때까지 기다렸다가 사용해 보겠습니다. 감사 해요!

@mrpmorris 3.2 프리뷰 2가 출시되었습니다! 파일 이름 바꾸기를 위해 https://github.com/dotnet/aspnetcore/pull/19558#issuecomment -594461263에 제안된 단계가 작동합니까?

안녕 여러분!

최근 Blazor WebAssembly 3.2 Preview 2 릴리스에서는 Blazor WebAssembly 앱을 방해하는 프록시/방화벽/바이러스 백신 소프트웨어를 해결하기 위해 앱의 .dll 파일 이름을 더 쉽게 바꿀 수 있도록 몇 가지를 변경했습니다. 이 문제를 겪고 있는 사람들이 Blazor WebAssembly 앱(독립 실행형 또는 ASP.NET Core 호스팅)의 게시된 출력 에 대해 아래 단계를 시도하고 도움이 되는지 확인하기를 바랍니다.

  • 게시된 출력의 wwwroot 디렉터리에서 PowerShell 프롬프트를 엽니다(예 yourapp\bin\Release\netstandard2.1\publish\wwwroot
  • 다음 두 줄을 실행합니다.
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

리눅스 / 맥OS

  • 게시된 출력의 wwwroot 디렉토리에서 터미널을 엽니다(예 yourapp/bin/Release/netstandard2.1/publish/wwwroot
  • 다음 두 줄을 실행합니다.
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

이 단계를 시도해 보고 어떻게 진행되는지 알려주십시오. 여전히 문제가 발생하면 저희에게 알려주십시오! 필요한 경우 시도할 다른 아이디어가 있습니다.

감사 해요!

그것은 나를 위해 일했습니다. Azure DevOps에서 게시 단계를 조정하고 마지막에 zip을 생성하도록 비활성화해야 했지만.

나의 경우에는:

- 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 어떤 의미에서 효과가 있었나요? (일종의 안티바이러스나 방화벽으로 인해) 이전에 사이트가 작동하지 않고 URL을 변경하면 이 문제가 해결된다는 결론을 내린 적이 있습니까? 그런 경우 https://github.com/dotnet/aspnetcore/issues/19552에 이전에 어떤 바이러스 백신/방화벽/등이 문제를 일으켰는지에 대한 세부 정보를 게시할 수 있습니까? 감사 해요!

@SteveSandersonMS 글쎄, 나는 이전에 rewriter를 통해 해결했습니다. 3.2 미리 보기 2로 업그레이드한 후 더 이상 작동하지 않고 응용 프로그램이 다시 차단되었습니다. 위와 같이 다시 작동합니다.

불행히도 우리 네트워크에 어떤 방화벽이 있는지 말할 수 없으며 로컬에서 문제 없이 작업했기 때문에 AntiVirus(McAffee)가 여기에 영향을 미쳤다고 생각하지 않습니다.

내 사무실의 누군가가 COVID-19에 대해 양성 반응을 보였으므로 내 사무실이 몇 주 동안 문을 닫을 것 같습니다. 즉, 방화벽을 통해 파일에 액세스하지 않을 것입니다. 죄송합니다.

@mrpmorris 문제 없습니다. 안전히 계세요!

안녕 여러분!

최근 Blazor WebAssembly 3.2 Preview 2 릴리스에서는 Blazor WebAssembly 앱을 방해하는 프록시/방화벽/바이러스 백신 소프트웨어를 해결하기 위해 앱의 .dll 파일 이름을 더 쉽게 바꿀 수 있도록 몇 가지를 변경했습니다. 이 문제를 겪고 있는 사람들이 Blazor WebAssembly 앱(독립 실행형 또는 ASP.NET Core 호스팅)의 _게시된 출력_에 대해 아래 단계를 시도하고 도움이 되는지 확인하기를 바랍니다.

@danroth27

스크립트를 실행했는데(Windows에서 개발하지만 Linux 환경에서 다른 Linux 환경으로 배포하므로 제공된 Linux 스크립트를 사용했습니다) 새 이름으로 배포되었으며 페이지를 로드할 때 파일을 로드하는 것 같습니다. 새 확장으로 문제가 없고 앱이 작동합니다. 우리의 경우 Avast는 더 이상 앱에 플래그를 지정하지 않고 더 이상 다운로드를 차단하지 않습니다.

팬데믹 상황으로 인해 회사 방화벽 상황을 확인하기 전에 조금 있을 것입니다.

이것은 빌드에 추가하기에 충분히 간단한 단계이며 단점이 없는 것 같으므로 사용을 시작하겠습니다.

감사 해요!

@danroth27 이것이 어느 시점에서 기본값이 될 것이므로 이 단계를 수행할 필요가 없습니까? .dll 파일 형식에 일반적인 문제가 있는 경우 모든 사람이 이 작업을 수행하도록 요구하는 대신 .bin으로 이동하거나 파일 형식을 기본값으로 사용하지 않을 이유가 있습니까?

".dll"이 아니더라도 바이러스 검사기가 dll 파일인지 확인하기 위해 파일을 검사할 가능성이 있습니까?

@jjjjjjjjjjjjjjjjjjjjjjj 넘소에에에 용섭
무결성 실패 또는 파일을 찾을 수 없는 것과 관련된 브라우저 콘솔에 많은 오류가 있습니다.

_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.

Windows와 Linux Docker 컨테이너 모두에서 동일한 결과로 언급된 @danroth27 단계를 시도했습니다.

3.2 미리보기 4 사용.

@radderz 이 문제는 모든 환경에 영향을 미치는 것으로 보이지 않습니다. 특정 환경에만 해당되며 정책 기반인 경우가 많습니다. 다른 파일 확장자로 전환하면 이것이 모든 사람에게 작동한다는 보장은 없습니다. 따라서 모든 사람의 기본값을 변경하는 대신 이 문제가 발생한 고객이 위에 제공된 기술을 사용하여 파일 확장명을 직접 제어할 수 있는 계획을 진행하고 있습니다.

바이러스 백신 소프트웨어/프록시/방화벽이 파일 확장자를 보는 것보다 파일을 더 자세히 검사할 수도 있습니다. 지금까지 우리는 아직 이것에 의해 차단되는 사람에 대해 듣지 못했습니다. 이것이 문제가 되면 다른 완화 조치를 취하겠습니다.

@mihaimyh 콘텐츠 보안 정책이 잘못 구성된 것 같습니까?

@mihaimyh 콘텐츠 보안 정책이 잘못 구성된 것 같습니까?

@danroth27 좀 더 명확하게 말씀해 주시겠습니까? 어떤 보안 정책을 말씀하시는 건가요? 보안 정책이 구현되지 않은 개발 환경에서도 이러한 오류가 발생했습니다.

@mihaimyh 죄송합니다. 콘텐츠 보안 정책과 하위 리소스 무결성 을 혼동한 것 같습니다. 브라우저가 다운로드한 자산의 해시가 integrity 속성을 통해 마크업에 지정된 해시와 일치하도록 강제하려는 것처럼 보이지만 integrity 속성이 없습니다. 이는 또한 Blazor가 앱 리소스를 다운로드하고 캐시하는 방법과 관련이 있을 수 있습니다. 이 앱은 유사한 해시 기반 전략을 사용하여 파일이 변경되었는지 확인합니다.

@mihaimyh 죄송합니다. 콘텐츠 보안 정책과 하위 리소스 무결성 을 혼동한 것 같습니다. 브라우저가 다운로드한 자산의 해시가 integrity 속성을 통해 마크업에 지정된 해시와 일치하도록 강제하려는 것처럼 보이지만 integrity 속성이 없습니다. 이는 또한 Blazor가 앱 리소스를 다운로드하고 캐시하는 방법과 관련이 있을 수 있습니다. 이 앱은 유사한 해시 기반 전략을 사용하여 파일이 변경되었는지 확인합니다.

@ danroth27 좋습니다. 추가하여 무결성 검사를 우회할 수 있다고 생각합니다.

<BlazorCacheBootResources>false</BlazorCacheBootResources>

내 .csproj 파일에 추가했지만 여전히 무결성 검사가 비활성화된 404 이벤트가 발생했습니다.

@mihaimyh 이것을 안정적으로 재현할 수 있다면 파일 확장자 문제와 관련이 없는 것으로 보이므로 이 문제에 대한 새 문제를 여는 것이 좋습니다. 그래야 올바른 사람들과 더 쉽게 소통할 수 있습니다.

"dll 이름 바꾸기" 스크립트에 이와 같은 것을 추가했는지 확인하십시오.

# 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"

대부분의 경우 사전 압축된 blazor.boot.json 이 "고정" blazor.boot.json 대신 다운로드되어 무결성 문제를 일으키는 ".bin" 파일 대신 ".dll" 파일을 요청합니다.

따라서 압축된 json 파일을 제거하거나 blazor.boot.json을 다시 압축해야 하지만 그 번거로움을 겪을 가치는 없다고 생각합니다.

언젠가는 이 모든 것이 csproj의 플래그가 있는 프레임워크에서 처리될 수 있기를 바랍니다.

<BlazorBinariesExtension>.bin</BlazorBinariesExtension>

안녕 여러분. 이 시점에서 스크립트를 사용하여 게시된 .NET 어셈블리의 파일 확장명을 변경하기 위해 권장하는 전략을 문서화 했습니다. @stavroskasidis 의 제안은 이를 수행하는 간단한 기본 제공 방법을 제공하는 데 여전히 좋은 방법이라고 생각하므로 제안을 추적하기 위해 https://github.com/dotnet/aspnetcore/issues/21489 를 열었습니다. 이 시점에서 이 문제를 종료할 준비가 되었다고 생각합니다. 자세한 피드백을 주신 모든 분들께 감사드립니다!

내가 볼 수 있듯이 .dll에서 .bin으로의 이름 바꾸기는 wwwroot/service-worker-assets.js 에서도 수행되어야 하고 wwwroot/service-worker-assets.js.brwwwroot/service-worker-assets.js.gz 제거하거나 다시 압축해야 합니다. 그렇지 않으면 무결성 문제가 있습니다. 브라우저의 콘솔.

이 페이지가 도움이 되었나요?
0 / 5 - 0 등급