如何在遵守内容安全策略的同时从PHP脚本中设置JavaScript变量

时间:2017-04-28 20:49:41

标签: javascript php content-security-policy

我们正在重新设计一些应用程序,其中一个要求是能够遵守不允许内联脚本的内容安全策略。

一般情况下,大多数事件处理程序和逻辑块已经存在于外部文件中,移动剩余的straggler并不是问题,但有以下例外。

我们有一些存储在SQL数据库中的设置,我们必须为渲染的HTML页面的.js文件提供一些这些值。

通常我会做类似的事情:

<script>
var ns.i = '<?= $i;?>',
    ns.j = '<?= $j;?>';
</script> 

对我来说,我有这些潜在的选择:

  1. 将所需的值放在关联数组中,json_encode,将其放在隐藏的表单字段中。这对我来说就像是一个黑客,但从我的角度来看也是最简单的。
  2. 创建一个div标签并将所有值放在HTML 5数据属性中。
  3. 创建表单并将值放入隐藏的表单字段中。
  4. 生成一个随机数,并在脚本标记上设置nonce属性,并设置CSP标头随机数。
  5. 到目前为止,我无法找到针对此类事情的建议或记录的最佳做法。

    重构此代码需要做很多工作,我希望尽力确保我们在此时尽可能采用最佳方式。

0 个答案:

没有答案