ASP.NET Core: Alle Cookies nur noch per HTTPS ausliefern
Möchte man bei ASP.NET Core seine Cookie z.B. nur über HTTPS ausliefern oder
vor dem Zugriff vor JavaScript schützen. So kann man bei dem entsprechenden
Cookie die Properties Secure
und HttpOnly
setzen. Bei jedem
einzelnem Cookie, oder bei den Optionen für entsprechenden Middlewares.
Jedoch ist die Aufwand, und man weiss vielleicht nicht unbedingt welche
Middleware auch mal eben tempörare oder andere Cookies erzeugt.
Dies können z.B. im Falle der ASP.NET Security Middlewares schonmal einige sein.
Abhilfe schafft hier die CookiePolicyMiddlware
von ASP.NET Core.
Diese findet sich im NuGet Paket Microsoft.AspNetCore.CookiePolicy
. Dies muss
man seinem Projekt hinzufügen, dann kann in der Startup
-Klasse der Anwendung
einfach die Middleware konfiguriert werden.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment()) {
app.UseCookiePolicy(new CookiePolicyOptions
{
Secure = CookieSecurePolicy.Always,
HttpOnly = HttpOnlyPolicy.Always,
OnAppendCookie = context =>
{
context.CookieOptions.Expires = DateTimeOffset.Now.AddMinutes(10);
}
});
}
}
Dies sollte natürlich vor allem geschehen was Cookie erzeugt.
Die CookiePolicy
hat die Properties Secure
und HttpOnly
, sowie jeweils
eine Callback Funktion für beim hinzufügen und entfernen von Cookies.