CSP-允许我从给定目录中使用自己的脚本

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

我已经阅读了几篇有关为网站实施内容安全策略的文章,但是我仍然不知道如何为我的网站正确地将其组合在一起。抱歉,如果还有其他话题,但到目前为止,我还没有找到一个可以帮助我解决问题的线索。

我有纯HTML文件,我使用自己的JavaScript根据用户的输入在HTML画布上进行一些渲染。

我在“ js”目录中有.js文件。目前,我在子目录中运行我的网站,因此我使用相对路径而非绝对路径来包含它们:

<script type="text/javascript" src="js/wbsc-eval.js"></script>
<script type="text/javascript" src="js/wbsc-global.js"></script>
<script type="text/javascript" src="js/wbsc-input.js"></script>
<script type="text/javascript" src="js/wbsc-output.js"></script>

这是我的CSP标头:

<meta http-equiv="Content-Security-Policy" content="default-src 'none'; child-src 'none'; object-src 'none'; style-src 'self' https://stackpath.bootstrapcdn.com; script-src 'self';">

它允许使用我自己的CSS + Bootstrap,但我的JS被阻止:

Refused to execute inline event handler because it violates the following Content Security Policy directive: "script-src 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...') is required to enable inline execution.

根据我的阅读,我认为script-src 'self'应该允许来自同一站点的脚本,但显然不允许。

我还尝试设置一个明确的URL,该URL当前托管在我的网站上,但是我认为这不是正确的方法,因为它应该是可移植的,而且似乎也无法正常工作。

是否有一些简单明了的方法?要允许我自己的脚本的明确集并禁止其他所有内容?

添加'unsafe-inline'可行,但是我听说这完全没有CSP,而且我还遇到了一些我在脚本中仍然不允许执行的JS操作。我想我可以每次计算JS的SHA哈希并将其传递给HTML标头。但是我在开发过程中经常更改脚本,因此看起来不太方便。最后-如果有一些简单的机制可以动态创建随机数,我可能会考虑使用它。但是出于我的目的,我认为我不需要一些健壮的框架,使用一个HTML +几个JS文件就可以了...

javascript html http security content-security-policy
2个回答
0
投票

拒绝执行内联事件处理程序

因此问题与正在加载的<script>元素无关(至少直接无关)。>

您在某处有类似的东西:

<button onclick="call_a_function()">

这是一个内联事件处理程序。

addEventListener替换        

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.