为什么不是" script.text = ..."在严格的CSP下被认为是不安全的?

时间:2018-05-11 18:06:50

标签: content-security-policy

根据MDN关于script-src的文档,以下内容被视为"不安全"并且在严格的CSP下被阻止:

  • eval()
  • Function()
  • window.setTimeout("bad()", 0)
  • 等方法中使用的字符串文字
  • window.execScript(仅IE <11)

但为什么以下不属于此列表的一部分?它与eval(badCode)有何不同?

var script = document.createElement('script');
script.text = badCode;
document.head.appendChild(script);

1 个答案:

答案 0 :(得分:2)

使用script-src将阻止内联脚本执行,因此设置脚本文本或textContent将无法解决。要检查它,请加载带有以下元标记的html文件:

    <meta http-equiv="Content-Security-Policy" content="script-src 'self'">

并尝试再次执行您的代码。

来源:

https://developer.chrome.com/extensions/contentSecurityPolicy#JSExecution https://developers.google.com/web/fundamentals/security/csp/?hl=en