You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows容器的Azure App Service中配置并测试安全标头?

配置安全标头(.NET后端 + Windows容器Azure App Service)

1. 现有HSTS配置补充

你当前的HSTS配置已开启Preload和IncludeSubDomains,注意MaxAge当前设为5分钟,正式环境建议调整为60天以上(如TimeSpan.FromDays(60))。同时需确保在Configure方法中仅在生产环境启用HSTS,避免干扰本地开发:

if (!app.Environment.IsDevelopment())
{
    app.UseHsts();
}

2. 配置其他安全标头

以下提供两种.NET后端配置安全标头的方案,适配Windows容器部署场景:

方案一:自定义中间件(直接在Startup.cs/Program.cs的Configure方法中添加)

app.Use(async (context, next) =>
{
    // X-XSS-Protection:阻止页面加载检测到的XSS攻击
    context.Response.Headers.Append("X-XSS-Protection", "1; mode=block");
    // X-Frame-Options:禁止页面被嵌入到iframe中,可按需改为SAMEORIGIN(允许同域嵌入)
    context.Response.Headers.Append("X-Frame-Options", "DENY");
    // X-Content-Type-Options:禁止浏览器自动推断资源类型
    context.Response.Headers.Append("X-Content-Type-Options", "nosniff");
    // Referrer-Policy:控制请求来源信息的发送策略
    context.Response.Headers.Append("Referrer-Policy", "strict-origin-when-cross-origin");
    // Permissions-Policy(替代原Feature-Policy):限制浏览器权限的使用
    context.Response.Headers.Append("Permissions-Policy", "geolocation=(), camera=(), microphone=()");
    // Content-Security-Policy:需根据Angular应用实际资源调整规则,生产环境建议减少unsafe-inline/unsafe-eval
    context.Response.Headers.Append("Content-Security-Policy", "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self';");
    
    await next();
});

方案二:使用Microsoft.AspNetCore.HeaderPolicy包(结构化配置)

  1. 安装NuGet包:
Install-Package Microsoft.AspNetCore.HeaderPolicy
  1. 在ConfigureServices中配置标头规则:
services.AddHeaderPolicy(options =>
{
    options.AddXssProtectionHeader("1; mode=block");
    options.AddFrameOptionsHeader(FrameOptions.Deny);
    options.AddContentTypeOptionsHeader();
    options.AddReferrerPolicyHeader(ReferrerPolicy.StrictOriginWhenCrossOrigin);
    options.AddPermissionsPolicy(builder =>
    {
        builder.AddGeolocation().None();
        builder.AddCamera().None();
    });
    options.AddContentSecurityPolicy(builder =>
    {
        builder.AddDefaultSrc().Self();
        builder.AddScriptSrc().Self().UnsafeInline().UnsafeEval();
        builder.AddStyleSrc().Self().UnsafeInline();
        builder.AddImgSrc().Self().Data();
    });
});
  1. 在Configure中启用中间件:
app.UseHeaderPolicy();

3. Azure App Service容器部署注意事项

  • 确保容器暴露的HTTPS端口(如5001)与Azure App Service容器设置中的端口一致,HTTPS重定向配置的HttpsPort需匹配该端口。
  • 在Azure App Service的SSL设置中开启「HTTPS Only」,强制所有请求走HTTPS。

4. 安全标头测试方法

方法一:浏览器开发者工具

  1. 按F12打开Chrome/Firefox开发者工具,切换到「Network」标签
  2. 刷新页面,选中主请求(如index.html),查看「Response Headers」区域,确认所有配置的安全标头存在。

方法二:curl命令行测试

在终端执行以下命令,查看响应头:

curl -I https://你的应用域名.com

方法三:本地容器测试

本地运行容器时,用上述两种方法测试,确保标头在本地环境正常返回(注意HSTS仅在非开发环境启用)。

内容的提问来源于stack exchange,提问作者LHog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 01:32:07