问题描述
我有点困惑。我一直在经历presentation slide deck on Content Security Policies。在幻灯片10上,在讨论'strict-dynamic'
指令时,给出了三个示例:一个好,两个坏:
// good
<script nonce="r4nd0m">
var s = document.createElement("script");
s.src = "//example.com/bar.js";
document.body.appendChild(s);
</script>
// bad
<script nonce="r4nd0m">
var s = "<script src=//example.com/bar.js></script>";
document.write(s);
// -OR-
document.body.innerHTML = s;
</script>
Google还建议对其CSP page进行类似的更改(“重构对与CSP不兼容的JS API的调用”)。
我了解好的示例将异步加载,而不良的示例则不会(unless async defer
is added)。但是...
问题是“坏”方式不会(自动)传播随机数吗?还是“ {bad}”有点“ like a call to eval()”,因为您可以用它做很多事情(尽管在HTML 5中,script wouldn't execute除非附加到事件处理程序,否则显然)?
是不是假设likely uses parser-inserted user input是“坏”方式,这就是为什么它很坏(这就是我从后来发现的演示视频中得到的结果)?为什么不允许一个调用而不允许另一个调用(在给定的示例中,它们似乎实现了相同的事情-加载外部脚本)?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)