feat(admin/security): implement IP Lockout service for brute-force defense and compact administrative UI density
TaxBaik CI/CD / build-and-deploy (push) Successful in 57s
TaxBaik CI/CD / build-and-deploy (push) Successful in 57s
This commit is contained in:
@@ -95,6 +95,7 @@ builder.Services.AddRateLimiter(options =>
|
||||
});
|
||||
|
||||
// Razor Pages
|
||||
builder.Services.AddSingleton<IIpLockoutService, IpLockoutService>();
|
||||
builder.Services.AddRazorPages();
|
||||
|
||||
// Session & TempData (쿠키 저장소)
|
||||
@@ -358,7 +359,7 @@ app.Use(async (context, next) =>
|
||||
context.Response.Headers["X-Permitted-Cross-Domain-Policies"] = "none";
|
||||
if (!context.Response.Headers.ContainsKey("Content-Security-Policy"))
|
||||
{
|
||||
context.Response.Headers["Content-Security-Policy"] = "default-src 'self'; img-src 'self' data: https:; style-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com data:; script-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net https://www.googletagmanager.com https://static.cloudflareinsights.com; connect-src 'self' https: https://cloudflareinsights.com; frame-ancestors 'none'; base-uri 'self'; form-action 'self';";
|
||||
context.Response.Headers["Content-Security-Policy"] = "default-src 'self'; img-src 'self' data: https:; style-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com https://cdn.jsdelivr.net data:; script-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net https://www.googletagmanager.com https://static.cloudflareinsights.com; connect-src 'self' https: https://cloudflareinsights.com; frame-ancestors 'none'; base-uri 'self'; form-action 'self';";
|
||||
}
|
||||
|
||||
await next();
|
||||
|
||||
Reference in New Issue
Block a user