使内联 JS 配置对象符合 CSP(CSP 级别 1)

Make inlined JS Configuration object CSP-compliant (CSP Level 1)

我的网络应用程序(JS 部分)需要在加载前由服务器配置。 现在它是通过以下方式完成的:

<script>
var configObj = {
setting1: "blah",
setting2: {val1: 1, val2:2},
};
</script>
<script src="myapp.js">

Config 是特定于请求的,并且在构建 html 响应时由服务器内联。 它运行良好,但违反了 unsafe-inline 内容安全策略规则。

不幸的是,我们不能只依赖 CSP Level 2 (hashes/nonces),我们目前只能使用 Level 1。 是否有 proved/recommended 以符合 CSP 的方式配置客户端应用程序的方法?

到目前为止,我正在考虑将它作为字符串嵌入到某个 DOM 元素中,然后 JSON.parsing 它。还有其他(更好的)选择吗?

  • 您可以将所有配置选项移动到 data-* 属性中,然后在脚本中读取它们。
  • 如果您担心随机数的兼容性,您可能会发现 this article 很有趣。