在ASP.NET Core 3.0中,与Http2存在安全问题的主要原因是Http2开启了服务器推送功能,而浏览器对服务器推送的资源没有进行严格的安全验证。
要解决这个问题,可以通过修改应用程序启用的Http2服务器选项来禁用服务器推送功能。以下是一个示例代码:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup()
.UseKestrel(options =>
{
options.ConfigureEndpointDefaults(listenOptions =>
{
listenOptions.Protocols = HttpProtocols.Http1; // 禁用Http2
});
});
在上面的示例中,ConfigureEndpointDefaults
方法用于配置默认的监听选项,然后将Protocols
属性设置为HttpProtocols.Http1
来禁用Http2。
请注意,这个解决方法会禁用整个应用程序的Http2支持,因此如果应用程序确实需要Http2功能,可以考虑使用其他方式来解决安全问题,例如使用TLS证书对推送资源进行安全验证。