如何安全地将 script-src 与已知的 JSONP 端点主机(如 syndication.twimg.com)结合起来?

Posted

技术标签:

【中文标题】如何安全地将 script-src 与已知的 JSONP 端点主机(如 syndication.twimg.com)结合起来?【英文标题】:How to safely combine script-src with known JSONP endpoint hosters like syndication.twimg.com? 【发布时间】:2017-10-02 16:11:01 【问题描述】:

我正在为包含嵌入式推文的页面使用内容安全策略,并且我收到了https:/​/​cdn.syndication.twimg.com 的报告,这在我的策略中是不允许的。

这是一个相当长的政策,但相关部分是

default-src 'none'; ... script-src 'self' apis.google.com platform.twitter.com; ...

但是,如果我将 cdn.syndication.twimg.com*.twimg.com 添加到标头的 script-src 部分,当我通过 Google CSP evaluator 运行标头时会收到警告:

cdn.syndication.twimg.com 已知托管允许绕过此 CSP 的 JSONP 端点。

其他一些域也会引发此警告。

我似乎处于两难境地:要么我禁止 Twitter 运行脚本(需要吗?我真的不知道)并获得违反政策的报告,要么我正在运行一个几乎没用的CSP。

有没有办法解决这个难题?

【问题讨论】:

【参考方案1】:

我不知道这是验证器错误还是细微的改进,但如果您将 script-src 更改为 script-src-elem,验证器不会抱怨。

【讨论】:

谢谢,但目前大多数浏览器都不支持这个:developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…

以上是关于如何安全地将 script-src 与已知的 JSONP 端点主机(如 syndication.twimg.com)结合起来?的主要内容,如果未能解决你的问题,请参考以下文章

如何安全地将 Backbone.js 应用程序连接到数据库?

内容安全策略指令:“script-src'self'blob:filesystem:chrome-extension-resource:”在获取是否

拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script-src 'self'”

内容安全策略:忽略 script-src 中的报告样本:指定严格动态

内容安全策略指令:“script-src 'self' blob: filesystem: chrome-extension-resource:” 获取时是不是

如何安全地将 MySQL 数据库与使用 PHP 的网页链接和使用?