.net core 3.1 中默认激活了 CSP(内容安全策略)吗?还是需要在启动时手动添加?
抱歉,如果以前曾在这里问过这个问题,但我似乎找不到答案。
框架无法知道哪种特定内容策略适合您的应用程序,因此它无法默认添加内容策略。您需要自己添加一个。
使用中间件,操作起来相当简单。例如,您可以只设置一个委托:
app.Use(async (context, next) =>
{
context.Response.Headers.Add("Content-Security-Policy", "...");
await next();
});
但是不要让它的简单性欺骗了您。深思熟虑:在具体决定使用哪些内容安全策略以及何时应用它时,您需要考虑几件事。例如,在您的开发环境中,您可能需要与生产环境中不同的安全策略(例如不需要使用
https
的安全策略)。还要考虑您的客户端代码是否使用需要允许 iframe、'unsafe-inline'
脚本等的应用程序技术。
制定内容安全策略后,请通过 Google 的 CSP 评估器运行它,以深入了解您可能没有考虑到的事情。
您需要将其添加到启动的配置方法中。默认不添加。
这将是最简单的解决方案,但是,如果您有复杂的 CSP,那么您可能需要设置自己的中间件类。
app.Use(async (context, next) =>
{
context.Response.Headers.Add("Content-Security-Policy", "default-src 'self';");
await next();
});
对于开发环境以外的环境,您可以在启动类的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'自我'