ASP.NET Core Kestrel 웹 서버를 사용한 호스트 필터링
Kestrel은 http://example.com:5000
과 같은 접두사에 따라 구성을 지원하지만 Kestrel은 일반적으로 호스트 이름을 무시합니다. 호스트 localhost
은 루프백 주소에 바인딩하는 데 사용된 특별한 경우입니다. 명시적 IP 주소를 제외한 모든 호스트는 모든 공용 IP 주소에 바인딩합니다. Host
헤더의 유효성이 검사되지 않았습니다.
해결 방법으로 호스트 필터링 미들웨어를 사용합니다. 미들웨어는 AddHostFiltering을 호출하는 CreateDefaultBuilder에 의해 추가됩니다.
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
호스트 필터링 미들웨어는 기본적으로 비활성화됩니다. 미들웨어를 활성화하려면 appsettings.json
/appsettings.{Environment}.json
에서 AllowedHosts
키를 정의합니다. 값은 포트 번호 없이 세미콜론으로 구분된 호스트 이름 목록입니다.
:
{
"AllowedHosts": "example.com;localhost"
}
참고 항목
전달된 헤더 미들웨어에는 AllowedHosts 옵션도 있습니다. 전달된 헤더 미들웨어 및 호스트 필터링 미들웨어는 다양한 시나리오에 대해 유사한 기능을 제공합니다. 전달된 헤더 미들웨어를 사용하여 AllowedHosts
를 설정하는 작업은 역방향 프록시 서버 또는 부하 분산 장치를 사용하여 요청을 전달하는 동안 Host
헤더가 유지되지 않는 경우에 적합합니다. 호스트 필터링 미들웨어를 사용하여 AllowedHosts
를 설정하는 것은 Kestrel이 공용 에지 서버로 사용되거나 Host
헤더가 직접 전달되는 경우에 적합합니다.
전달된 헤더 미들웨어에 대한 자세한 내용은 프록시 서버 및 부하 분산 장치를 사용하도록 ASP.NET Core 구성을 참조하세요.
ASP.NET Core
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기