将 CSP 与使用 unsafe-eval 的库结合使用

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

我正在尝试在我的 Angular 项目中实现 CSP。我的 CSP 如下;

script-src 'self' 'nonce-anything';
style-src 'self' 'nonce-anything' https://fonts.googleapis.com;
font-src 'self' https://fonts.gstatic.com;
upgrade-insecure-requests;
block-all-mixed-content;

我正在使用的库之一(json-logic-engine)正在使用 eval 函数,这就是为什么我不能让它在没有“unsafe-eval”的情况下运行。我认为脚本上的随机数属性将允许评估,但根据我最近的研究,它只允许不安全内联 - 而不是不安全评估。

1

有什么方法可以在不使用“unsafe-eval”的情况下修复它吗?

angular content-security-policy
1个回答
0
投票

因为 eval 实际上是不安全的。 Eval 在每种语言中的意思是“获取这个字符串并执行它的代码”。当然,您可能以半安全的方式使用 eval,但只要您完全允许,您就是在说“任何人都可以在给定入口点的情况下在我的应用程序中执行任意代码”。

来自问题37155270

因为这一点,你只有三个选择:基本上用一些安全选项(即不是所有情况)替换这个 eval 调用,对其进行预处理,并使用“unsafe-inline”。

您可以在这篇 web.dev 文章中看到更好的内容:web.dev csp eval

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