Skip to content

Commit

Permalink
Update security headers
Browse files Browse the repository at this point in the history
  • Loading branch information
damienbod committed Oct 26, 2024
1 parent 146a3a8 commit 777ba6c
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 24 deletions.
15 changes: 11 additions & 4 deletions BlazorAuth0Bff/Server/Program.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,20 @@
using Microsoft.AspNetCore.Mvc.Authorization;
using NetEscapades.AspNetCore.SecurityHeaders.Infrastructure;

var builder = WebApplication.CreateBuilder(args);

var services = builder.Services;
var configuration = builder.Configuration;

var idp = $"https://{configuration["Auth0:Domain"]}";

services.AddSecurityHeaderPolicies()
.SetPolicySelector((PolicySelectorContext ctx) =>
{
return SecurityHeadersDefinitions.GetHeaderPolicyCollection(
builder.Environment.IsDevelopment(), idp);
});

services.AddAntiforgery(options =>
{
options.HeaderName = AntiforgeryDefaults.HeaderName;
Expand Down Expand Up @@ -111,10 +121,7 @@
app.UseExceptionHandler("/Error");
}

var idp = $"https://{configuration["Auth0:Domain"]}";
app.UseSecurityHeaders(
SecurityHeadersDefinitions
.GetHeaderPolicyCollection(app.Environment.IsDevelopment(), idp));
app.UseSecurityHeaders();

app.UseHttpsRedirection();
app.UseBlazorFrameworkFiles();
Expand Down
28 changes: 8 additions & 20 deletions BlazorAuth0Bff/Server/SecurityHeadersDefinitions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,17 @@

public static class SecurityHeadersDefinitions
{
private static HeaderPolicyCollection? policy;

public static HeaderPolicyCollection GetHeaderPolicyCollection(bool isDev, string? idpHost)
{
ArgumentNullException.ThrowIfNull(idpHost);

var policy = new HeaderPolicyCollection()
// Avoid building a new HeaderPolicyCollection on every request for performance reasons.
// Where possible, cache and reuse HeaderPolicyCollection instances.
if (policy != null) return policy;

policy = new HeaderPolicyCollection()
.AddFrameOptionsDeny()
.AddContentTypeOptionsNoSniff()
.AddReferrerPolicyStrictOriginWhenCrossOrigin()
Expand All @@ -33,32 +39,14 @@ public static HeaderPolicyCollection GetHeaderPolicyCollection(bool isDev, strin

})
.RemoveServerHeader()
.AddPermissionsPolicy(builder =>
{
builder.AddAccelerometer().None();
builder.AddAutoplay().None();
builder.AddCamera().None();
builder.AddEncryptedMedia().None();
builder.AddFullscreen().All();
builder.AddGeolocation().None();
builder.AddGyroscope().None();
builder.AddMagnetometer().None();
builder.AddMicrophone().None();
builder.AddMidi().None();
builder.AddPayment().None();
builder.AddPictureInPicture().None();
builder.AddSyncXHR().None();
builder.AddUsb().None();
});
.AddPermissionsPolicyWithDefaultSecureDirectives();

if (!isDev)
{
// maxage = one year in seconds
policy.AddStrictTransportSecurityMaxAgeIncludeSubDomains();
}

policy.ApplyDocumentHeadersToAllResponses();

return policy;
}
}

0 comments on commit 777ba6c

Please sign in to comment.