.net core 3.1 中默认激活了 CSP(内容安全策略)吗?

问题描述 投票:0回答:3

.net core 3.1 中默认激活了 CSP(内容安全策略)吗?还是需要在启动时手动添加?

抱歉,如果以前曾在这里问过这个问题,但我似乎找不到答案

.net asp.net-core asp.net-core-3.1
3个回答
9
投票

框架无法知道哪种特定内容策略适合您的应用程序,因此它无法默认添加内容策略。您需要自己添加一个。

使用中间件,操作起来相当简单。例如,您可以只设置一个委托:

app.Use(async (context, next) =>
{
    context.Response.Headers.Add("Content-Security-Policy", "...");
    await next();
});

但是不要让它的简单性欺骗了您。深思熟虑:在具体决定使用哪些内容安全策略以及何时应用它时,您需要考虑几件事。例如,在您的开发环境中,您可能需要与生产环境中不同的安全策略(例如不需要使用

https
的安全策略)。还要考虑您的客户端代码是否使用需要允许 iframe、
'unsafe-inline'
脚本等的应用程序技术。

制定内容安全策略后,请通过 Google 的 CSP 评估器运行它,以深入了解您可能没有考虑到的事情。


4
投票

您需要将其添加到启动的配置方法中。默认不添加。

这将是最简单的解决方案,但是,如果您有复杂的 CSP,那么您可能需要设置自己的中间件类。

app.Use(async (context, next) =>
{
   context.Response.Headers.Add("Content-Security-Policy", "default-src 'self';");
    await next();
});

0
投票

对于开发环境以外的环境,您可以在启动类的configure方法中进行配置,如下所示:

    app.Use(async (context, next) =>
    {
     if (!env.IsDevelopment())
     { 
        context.Response.Headers.Add("Content-Security-Policy", "default-src 
        'self';");
        await next();
     }
}

您可以自定义创建自己的中间件:

app.UseMiddleware<CSPMiddleware>()
,您的自定义代码将位于 CSPMiddleware 中。

与内容安全相关的常见错误可以通过使用一些常见指令来解决,例如“default-src 'self'、”img-src 'self'、“connect-src 'self'、”frame-src 'self'、“media -src'自我'

© www.soinside.com 2019 - 2024. All rights reserved.