首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有(CSP)内容安全策略的ASP.Net核心

具有(CSP)内容安全策略的ASP.Net核心
EN

Stack Overflow用户
提问于 2018-05-13 06:05:56
回答 3查看 7.5K关注 0票数 3

为了使我的角5应用程序尽可能安全,我花了一些时间在CSP上,但很难让它正常工作。

我已经使用CSP启用了NWebSec,如下所示:

代码语言:javascript
运行
复制
 app.UseCsp(options =>
        {
            options.DefaultSources(s => s.Self());
            options.ScriptSources(s => s.Self());
            options.StyleSources(s => s.Self().CustomSources("stackpath.bootstrapcdn.com"));
        }); // Use Content Security Policy

我使用以下方法构建了角应用程序:

代码语言:javascript
运行
复制
ng build --aot --prod

ASP.Net核心应用程序使用app.UseStaticFiles()中间件承载(构建的)角度应用程序。

我已经阅读了几篇文章,并试图找到一个关于如何实现这个工作的直接答案,但是我无法通过这个错误,这个错误起源于/main.ae5fbeccd9ff1305a55c.js:

拒绝应用内联样式,因为它违反了以下内容安全策略指令:" style -src 'self‘stackpath.bootstrapcdn.com“。要么是‘不安全-内联’关键字,要么是散列('sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='),,要么是“不安全-.”)需要启用内联执行。

我相信Angular正在创建导致这些错误的代码,解决方案是在构建应用程序时使用“-aot”命令,但这并不适用于我。

我已经尝试了角5和角6(甚至尝试使用一个新的角度项目)。同样的问题。

我的问题是:目前是否有一种在不牺牲安全性的情况下使角5/6与CSP一起工作的推荐方法?如果没有,接下来最好的事情是什么?

干杯

详细信息: Index.html (默认构建角6应用程序)

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <title>Default Angular App</title>
  <base href="/">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
  <link rel="stylesheet" href="styles.34c57ab7888ec1573f9c.css">
</head>

<body>
  <app-root></app-root>

  <script type="text/javascript" src="runtime.6afe30102d8fe7337431.js"></script>
  <script type="text/javascript" src="polyfills.2903ad11212d7d797800.js"></script>
  <script type="text/javascript" src="main.ae5fbeccd9ff1305a55c.js"></script>
</body>

</html>

EN

回答 3

Stack Overflow用户

发布于 2019-06-06 11:50:23

角的CSS处理不符合现代安全标准,因为样式在所有组件中仍然是内联的(这是一张票表示这一点)。到目前为止,我们必须忍受CSP头中不愉快的style-src 'unsafe-inline'指令。

对于带有Google字体的简单应用程序,CSP头看起来可能如下所示

代码语言:javascript
运行
复制
Content-Security-Policy: "default-src 'self'; style-src 'self' fonts.googleapis.com 'unsafe-inline'; font-src 'self' fonts.gstatic.com";

这个职位以角为单位详细介绍了CSP策略。

票数 2
EN

Stack Overflow用户

发布于 2018-05-13 09:24:57

这是织锦的安全,与棱角无关。您已经在您的index.cshtml中使用了内联样式(假设您使用的是ASP.NET核心的Razor )。

代码语言:javascript
运行
复制
app.UseCsp(options =>
        {
            options.DefaultSources(s => s.Self());
            options.ScriptSources(s => s.Self());
            options.StyleSources(s => s.Self().CustomSources("stackpath.bootstrapcdn.com").UnsafeInline());
        });

或,

<head>标记中添加这一行。

代码语言:javascript
运行
复制
<meta http-equiv="Content-Security-Policy" content=""style-src:'unsafe-inline'; script-src 'unsafe-inline'">
票数 1
EN

Stack Overflow用户

发布于 2020-01-24 10:14:10

我在this...but上的聚会有点晚了,我也有同样的设置,并且得到了那些CSP错误。最后,我在启动类的配置方法中注入了一个响应头。

例如,该代码允许来自cloudflare和maxcdn的脚本和css。

代码语言:javascript
运行
复制
        app.Use(async (ctx, next) =>
        {
            ctx.Response.Headers.Add("Content-Security-Policy",
            "default-src 'self'; script-src 'self' https://cdnjs.cloudflare.com; " +
            "style-src 'self' https://maxcdn.bootstrapcdn.com" );
            await next();
        });

在“app.UseStaticFiles()”之前插入;我希望它会有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50313234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档