繁体   English   中英

Angular 5 & CSP - 拒绝将字符串评估为 JavaScript,因为“unsafe-eval”不是允许的脚本源

[英]Angular 5 & CSP - Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script

我目前正在尝试向使用 Angular 5 构建的应用程序引入内容安全策略。我目前正在使用 index.html 中的meta标记实现 CSP,尽管我将来会更改它。 我已将以下内容插入到我的应用程序中

<meta http-equiv="Content-Security-Policy" content="script-src 'self'; img-src 'self' data:;media-src 'self'; object-src 'self' data: 'unsafe-eval'; style-src 'self' https://fonts.googleapis.com 'unsafe-inline';">

这几乎满足了我的需求,但是当我部署到测试服务器时,浏览器控制台会给我以下消息:

未捕获的 EvalError:拒绝将字符串评估为 JavaScript,因为在以下内容安全策略指令中“unsafe-eval”不是允许的脚本源:“script-src 'self'”。

好的,所以我需要将'unsafe-eval'script-src指令中。 这不是一个真正的问题,但它似乎让我担心记住 eval() 是邪恶的!

对于希望使用 CSP 的 Angular 5 应用程序,是否必须在script-src指令中包含'unsafe-eval' 有没有办法可以保留防止使用eval()的安全功能? 是否有必要将其包含在内,因为 Angular 使用eval() 我假设 Content-Security-Policy 元标记的内容是正确的,尽管我确信可能并非如此。

我在 angular github https://github.com/angular/angular/issues/19142上阅读了这个问题,但我不确定这个问题是否与我有关,因为我在我的应用程序中没有使用 SystemJS 而是 webpack?

非常感谢提供帮助、答案和建议的建议。

我遇到了同样的问题,我注意到在 --prod 模式下运行不会出错(我使用的是 Angular 8)。

根据您的设置,您可以使用客户端响应标头来实施您的安全策略,因为这不会导致此错误。

如果您的问题仅与在调试模式下运行(使用元标记)有关,那么这不是适合您的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM