为了使我的角5应用程序尽可能安全,我花了一些时间在CSP上,但很难让它正常工作。
我已经使用CSP
启用了NWebSec
,如下所示:
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
我使用以下方法构建了角应用程序:
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应用程序)
<!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>
发布于 2019-06-06 11:50:23
发布于 2018-05-13 09:24:57
这是织锦的安全,与棱角无关。您已经在您的index.cshtml
中使用了内联样式(假设您使用的是ASP.NET核心的Razor )。
app.UseCsp(options =>
{
options.DefaultSources(s => s.Self());
options.ScriptSources(s => s.Self());
options.StyleSources(s => s.Self().CustomSources("stackpath.bootstrapcdn.com").UnsafeInline());
});
或,
在<head>
标记中添加这一行。
<meta http-equiv="Content-Security-Policy" content=""style-src:'unsafe-inline'; script-src 'unsafe-inline'">
发布于 2020-01-24 10:14:10
我在this...but上的聚会有点晚了,我也有同样的设置,并且得到了那些CSP错误。最后,我在启动类的配置方法中注入了一个响应头。
例如,该代码允许来自cloudflare和maxcdn的脚本和css。
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()”之前插入;我希望它会有所帮助。
https://stackoverflow.com/questions/50313234
复制相似问题