.NET8 으로 개발한 사이트를 다른 사이트에서 iframe 내에서 사용하기 위해 CSP 설정을 하였는데
.NET9 으로 버전을 올린 후 아래와 같은 에러가 발생되었습니다.
Refused to frame because an ancestor violates the following Content Security Policy directive: "frame-ancestors"
위 문제는 아래 링크를 보면 알 수 있듯이
https://learn.microsoft.com/en-us/aspnet/core/release-notes/aspnetcore-9.0?view=aspnetcore-9.0
By default, Interactive Server components enable compression for WebSocket connections and set a frame-ancestors Content Security Policy (CSP) directive set to 'self', which only permits embedding the app in an <iframe> of the origin from which the app is served when compression is enabled or when a configuration for the WebSocket context is provided. |
.NET9 에서는 보안 문제 때문인지 모르겠지만 csp 설정에 기본으로 self 가 추가되어있습니다.
이를 없애고 iframe 내장하는 것을 모두 허용하기 위해서는 아래처럼 사용합니다
// ConfigureWebSocketOptions = null
app.MapRazorComponents<App>()
.AddInteractiveServerRenderMode(o => o.ContentSecurityFrameAncestorsPolicy = null);
또한 특정 도메인을 허용하기 위해서는 아래처럼 설정합니다.
// ContentSecurityFrameAncestorsPolicy = "'self' *.mydomain.com"
app.MapRazorComponents<App>()
.AddInteractiveServerRenderMode(o => o.ContentSecurityFrameAncestorsPolicy = "'self' *.mydomain.com");
iframe 내장하는 것을 불허하는 경우에는 아래처럼 설정합니다.
// ContentSecurityFrameAncestorsPolicy = "'none'"
app.MapRazorComponents<App>()
.AddInteractiveServerRenderMode(o => o.ContentSecurityFrameAncestorsPolicy = "'none'");
저 같은 경우는 내부에서 사용하는 거라 null 로 설정하여 오류가 해결되었습니다.
Blazor에서 MonacoEitor 사용하기 (0) | 2024.11.16 |
---|---|
Blazor Serilog 에서 HTTP 로깅 제외하기 (0) | 2024.10.30 |
쿠버네티스 환경의 Blazor 애플리케이션에서 Client 실제 IP 남기는 방법 (0) | 2024.10.29 |
Blazor reconnection 메세지 줄이는 방법 (1) | 2024.10.24 |
Blazor iFrame 내에 포함될 수 있게 하기 - Content Security Policy (CSP) (0) | 2024.10.21 |