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

如何在ASP.NET 5.0中添加指定的HTTP响应安全头?

.NET 5.0 Web应用添加缺失的HTTP响应头方法

以下是几种给.NET 5.0 Web应用添加X-Frame-Options、Content-Security-Policy、X-XSS-Protection、X-Content-Type-Options响应头的方法,可根据需求选择:

一、全局添加(推荐,全应用生效)

在Startup.cs的Configure方法中添加自定义中间件,确保代码放在UseEndpoints之前:

app.Use(async (context, next) =>
{
    // X-Frame-Options:禁止页面被嵌入到任何iframe中,可选值还有SAMEORIGIN(仅允许同域嵌入)、ALLOW-FROM uri(指定允许的域名)
    context.Response.Headers.Add("X-Frame-Options", "DENY");
    // X-Content-Type-Options:禁止浏览器自动推断内容类型,防止MIME类型混淆攻击
    context.Response.Headers.Add("X-Content-Type-Options", "nosniff");
    // X-XSS-Protection:开启XSS防护,检测到攻击时阻止页面加载
    context.Response.Headers.Add("X-XSS-Protection", "1; mode=block");
    // Content-Security-Policy:根据你的业务需求调整规则,示例为仅允许加载同域资源
    context.Response.Headers.Add("Content-Security-Policy", "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline';");
    
    await next();
});

二、在特定Controller/Action中添加

如果仅需在个别接口或页面添加头,可直接在对应的Action方法中操作响应头:

public IActionResult Home()
{
    Response.Headers.Add("X-Frame-Options", "SAMEORIGIN");
    Response.Headers.Add("X-Content-Type-Options", "nosniff");
    Response.Headers.Add("X-XSS-Protection", "1; mode=block");
    Response.Headers.Add("Content-Security-Policy", "default-src 'self'; img-src https://*.example.com;");
    
    return View();
}

三、通过自定义过滤器添加

适合需要给多个Controller/Action统一添加头的场景:

1. 创建过滤器类

public class SecurityHeadersFilter : IActionFilter
{
    public void OnActionExecuting(ActionExecutingContext context)
    {
        var response = context.HttpContext.Response;
        response.Headers.Add("X-Frame-Options", "DENY");
        response.Headers.Add("X-Content-Type-Options", "nosniff");
        response.Headers.Add("X-XSS-Protection", "1; mode=block");
        response.Headers.Add("Content-Security-Policy", "default-src 'self';");
    }

    public void OnActionExecuted(ActionExecutedContext context)
    {
        // 可添加响应后的额外逻辑
    }
}

2. 注册过滤器

全局注册(全应用生效)

在Startup.cs的ConfigureServices方法中:

services.AddControllersWithViews(options =>
{
    options.Filters.Add<SecurityHeadersFilter>();
});

局部注册(仅指定Controller/Action生效)

先将过滤器注册为服务:

services.AddScoped<SecurityHeadersFilter>();

然后在目标Controller或Action上添加属性:

[ServiceFilter(typeof(SecurityHeadersFilter))]
public class HomeController : Controller
{
    // ...
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:01:08