如何允许内容安全策略从 google api 运行外部 javascript?

IT技术 javascript html reactjs google-maps content-security-policy
2021-05-19 00:47:19

这是我的应用程序当前的 script-src 内容安全策略:

script-src 'self' 'unsafe-inline' https://maps.googleapis.com https://maps.gstatic.com;

尝试加载以下外部js代码:

https://maps.googleapis.com/maps/api/js?key=${GOOGLE_API_KEY}&libraries=places&language=he

使用 unsafe-inline 它可以工作,但可能不安全,所以我想在我的代码中删除它,但它不允许脚本运行。试图向 script-src 添加一个值,例如https://maps.googleapis.com/*但它仍然没有工作。如何允许来自特定域的脚本?

1个回答

我有同样的问题,但能够通过使用来解决它的散列https://*.googleapis.com列入白名单。

script-src指令允许开发人员通过将其哈希指定为允许的脚本源来将特定的内联脚本列入白名单。

用法很简单。服务器计算特定脚本块内容的哈希值,并在Content-Security-Policy标头中包含该值的 base64 编码

例如:

<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'sha256-...4aQo=' https://*.googleapis.com">

请注意,对于动态应用程序,最好使用nonce

希望这可以帮助!