我正在我的 AngularJS 项目中导入 bootstrap.min.js 库文件。当我将以下 CSP 行添加到我的项目中时,问题就出现了:
<httpProtocol>
<customHeaders>
<add name="Content-Security-Policy" value="script-src 'self' http: https: 'unsafe-inline' 'unsafe-eval';"/>
<customHeaders>
<httpProtocol>
我需要从策略中删除 unsafe-eval。因此,我需要检查库文件是否兼容 CSP,特别是检查是否使用了setTimeout、setInterval、eval和Function,而不会在控制台中导致错误。
我尝试过的:
在 bootstrap.min.js 库文件(版本 3.4)中,我注意到 setTimeout 使用了 6 次,setInterval 使用了一次。我尝试调试,前两个setTimeout函数工作正常,但后续setTimeout调用没有被执行。我想知道当我从策略中删除 unsafe-eval 时,该库是否与 CSP 兼容。
为了确定
bootstrap.min.js
是否与删除 'unsafe-eval'
的内容安全策略 (CSP) 兼容,我们需要关注 Bootstrap 如何与 JavaScript 的执行上下文交互,特别是关于 setTimeout
、setInterval
、eval
等函数
和 Function
。
检查依赖关系:
eval
的库。确保这些依赖项也符合 CSP 标准。运行您的应用程序,并将 CSP 设置为排除
'unsafe-eval'
并测试使用 Bootstrap 的所有功能。
密切监视控制台错误。如果发生与脚本执行相关的错误,它们通常会指示有问题的函数。
如果
bootstrap.min.js
不使用 eval
、new Function()
或类似的构造,并且直接调用 setTimeout
和 setInterval
,则无需使用 'unsafe-eval'
指令它应该可以正常工作。关键是在运行时测试和监控任何 CSP 违规,以确认兼容性。