bootstrap.min.js CSP 兼容吗?

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

我正在我的 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,特别是检查是否使用了setTimeoutsetIntervalevalFunction,而不会在控制台中导致错误。

我尝试过的:

在 bootstrap.min.js 库文件(版本 3.4)中,我注意到 setTimeout 使用了 6 次,setInterval 使用了一次。我尝试调试,前两个setTimeout函数工作正常,但后续setTimeout调用没有被执行。我想知道当我从策略中删除 unsafe-eval 时,该库是否与 CSP 兼容。

javascript angularjs content-security-policy script-src unsafe-eval
1个回答
0
投票

为了确定

bootstrap.min.js
是否与删除
'unsafe-eval'
的内容安全策略 (CSP) 兼容,我们需要关注 Bootstrap 如何与 JavaScript 的执行上下文交互,特别是关于
setTimeout
setInterval
eval 等函数
Function

检查依赖关系:

  • 一些 Bootstrap 组件(如模式或工具提示)可能依赖于 jQuery 或其他可能使用
    eval
    的库。确保这些依赖项也符合 CSP 标准。

运行您的应用程序,并将 CSP 设置为排除

'unsafe-eval'
并测试使用 Bootstrap 的所有功能。 密切监视控制台错误。如果发生与脚本执行相关的错误,它们通常会指示有问题的函数。

如果

bootstrap.min.js
不使用
eval
new Function()
或类似的构造,并且直接调用
setTimeout
setInterval
,则无需使用
'unsafe-eval'
指令它应该可以正常工作。关键是在运行时测试和监控任何 CSP 违规,以确认兼容性。

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