Реализация HPKP в ядре ASP.NET
Простой способ реализации HPKP - использовать мою библиотеку, которую вы можете получить на NuGet: Joonasw.AspNetCore.SecurityHeaders.
Просто установите его в свой проект ASP.NET Core, а затем вы можете добавить заголовки HPKP в свое приложение с помощью одного вызова функции.
Пример настройки метода в Startup.cs:
public void Configure(IApplicationBuilder app, IHostingEnvironment env,
ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug(LogLevel.Debug);
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else
{
app.UseHttpsEnforcement();
app.UseHsts(new HstsOptions
{
Seconds = 30 * 24 * 60 * 60,
IncludeSubDomains = false,
Preload = false
});
app.UseHpkp(hpkp =>
{
hpkp.UseMaxAgeSeconds(7 * 24 * 60 * 60)
.AddSha256Pin("nrmpk4ZI3wbRBmUZIT5aKAgP0LlKHRgfA2Snjzeg9iY=")
.SetReportOnly()
.ReportViolationsTo("/hpkp-report");
});
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "hpkp-report",
template: "hpkp-report",
defaults: new { controller = "Report", action = "Hpkp" });
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}