如何从 chrome 扩展程序的 content_security_policy 中删除不安全评估

How to remove unsafe-eval from chrome extension's content_security_policy

我已经从我正在维护的遗留 chrome 扩展中删除了 evalnew Function 的所有用法。我应该如何更新 manifest.json 中的 content_security_policy 部分?

目前看起来是这样的:

{
  "content_security_policy": "script-src 'self' 'unsafe-eval' https://app.xyz.com; object-src 'self'"
}

如果我正确理解 chrome 扩展中的 CSP,在我从扩展代码中删除所有 evalnew Function 调用后,我可能会从manifest.json

Eval and related functions are disabled. [But,] the policy against eval() and its relative new Function(String) can be relaxed by adding 'unsafe-eval' to your policy

这意味着使用 evalnew Function 的代码只有在

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"

在您的清单中。

尝试从您的清单和 运行 您的扩展程序中删除这一行。如果一切仍按预期运行,那么您可以安全地从您的清单中删除此策略,因为您已正确删除所有禁用的功能。


Link to CSP

注意:您必须删除与 eval 相关的所有必要功能(如 here 所述)。

Code like the following does not work:

window.setTimeout("alert('hi')", 10);
window.setInterval("alert('hi')", 10);