Filtrowanie hostów za pomocą serwera internetowego ASP.NET Core Kestrel

Chociaż Kestrel obsługuje konfigurację na podstawie prefiksów, takich jak http://example.com:5000, Kestrel w dużej mierze ignoruje nazwę hosta. Host localhost to specjalny przypadek używany do wiązania adresów sprzężenia zwrotnego. Każdy host inny niż jawny adres IP wiąże się ze wszystkimi publicznymi adresami IP. Host nagłówki nie są weryfikowane.

Aby obejść ten problem, użyj oprogramowania pośredniczącego filtrowania hostów. Oprogramowanie pośredniczące jest dodawane przez CreateDefaultBuilderelement , który wywołuje metodę AddHostFiltering:

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();
}

Oprogramowanie pośredniczące filtrowania hostów jest domyślnie wyłączone. Aby włączyć oprogramowanie pośredniczące, zdefiniuj AllowedHosts klucz w pliku/appsettings.jsonappsettings.{Environment}.json . Wartość to rozdzielana średnikami lista nazw hostów bez numerów portów:

appsettings.json:

{
  "AllowedHosts": "example.com;localhost"
}

Uwaga

Oprogramowanie pośredniczące nagłówków przekazywanych ma AllowedHosts również opcję. Oprogramowanie pośredniczące nagłówków przekazywanych i oprogramowanie pośredniczące filtrowania hostów mają podobne funkcje w różnych scenariuszach. Ustawienie AllowedHosts z oprogramowaniem pośredniczącym nagłówków przekazywanych jest odpowiednie, gdy Host nagłówek nie jest zachowywany podczas przekazywania żądań za pomocą zwrotnego serwera proxy lub modułu równoważenia obciążenia. Ustawienie AllowedHosts z oprogramowaniem pośredniczącym filtrowania hostów jest odpowiednie, gdy Kestrel jest używane jako publiczny serwer brzegowy lub gdy Host nagłówek jest bezpośrednio przekazywany.

Aby uzyskać więcej informacji na temat oprogramowania pośredniczącego nagłówków przekazywanych, zobacz Configure ASP.NET Core to work with proxy servers and load balancers (Konfigurowanie ASP.NET Core do pracy z serwerami proxy i modułami równoważenia obciążenia).