我在Header中添加了以下内容,因此它允许来自相同的源,blob类型的图像等以及谷歌地图中的图像。
logMessageFormat=com.my.package.logging.P6spyHibernateSQLFormatter
为了提高效率,Google地图网址会更改为特定国家/地区的网址,例如
http://maps.google.com.au/mapfiles/ms/icons/green-dot.png http://maps.google.co.nz/mapfiles/ms/icons/green-dot.png
我们可以在URL之前使用通配符,如下所示
img-src 'self' data: blob: https://maps.googleapis.com
无论如何,我可以在URL的末尾使用通配符,如下所示,
img-src http://*.google.com.au...
并允许从maps.google.com.au或maps.google.co.nz等访问资源?
而不是使用https:*或允许所有*我想使用这样的特定来源。有没有办法实现这个目标?
答案 0 :(得分:2)
CSP的目的是限制页面资源的来源。
通配符允许一点灵活性,因此您可以:
img-src http://*.mysite.com
然后从以下方式提供来源:
cdn1.mysite.com/...
cdn2.mysite.com/...
但是,他们不会以其他方式工作,因为这会让任何人进入。
例如,在您的示例中,您有类似的内容:
http://mysite.au/...
http://mysite.nz/...
所以你保护'您的网站:
img-src http://mysite.*
现在假设我想破解你的网站?很容易 - 我只是去购买mysite.ru
,将我的恶意脚本放在那里,你的网站就可以了。
您可能拥有mysite
中的.au
,可能拥有mysite
中的.nz
,但他们彼此无关,与其他任何事情无关顶级域名权限。这甚至适用于像maps.google.*
这样的大型玩家 - 我确定某些狡猾的顶级域名(TLD)会在某个地方根据其国家/地区代码向我出售该域名(至少在谷歌起诉我之前)。
您要求的通配符模式就像信任任何来自" Something Street"但不关心街道所在的国家。
而是动态提供CSP标头以匹配您正在使用的来源,或者将CSP中的每个有效TLD都包含在空格分隔列表中。
答案 1 :(得分:1)
不幸的是,主机名最右侧位置的通配符不起作用。检查HTML5Rocks的Content Security Policy页面,接受通配符,但仅作为