frame-src 'self' blob:的精确含义及同源Blob限制方法咨询
关于CSP限制同源Blob资源的问题
1. frame-src 'self' blob: 的真实作用
你设置的这个指令里,blob:关键字是允许所有来源的Blob URL——不管这个Blob是你自己网站的脚本创建的,还是其他网站的脚本生成的。这就是Google CSP Evaluator显示允许'self'和blob:的原因,这里的blob:是全局放开所有Blob资源,不是只限制同源的。
2. 怎么实现仅加载同源Blob资源
Blob URL本身没有独立的源信息,它的权限完全跟着创建它的页面走。要只允许同源脚本生成的Blob被加载,得两步配合:
先限制脚本只能来自同源
设置script-src 'self',确保只有你自己网站的脚本能在页面上运行。这样非同源的脚本根本没法执行,自然也就创建不了Blob URL。再按需允许Blob加载
如果你需要在frame里加载Blob,还是得在frame-src里保留blob:,但结合script-src 'self'的限制,只有你自己脚本创建的Blob URL会被浏览器允许加载——非同源脚本连运行的机会都没有,更别说生成Blob了。
给个完整的CSP配置例子:
Content-Security-Policy: script-src 'self'; frame-src 'self' blob:;
要是你不需要在frame里加载Blob,而是在图片、脚本这类资源里用,就把对应的指令(比如img-src、script-src)加上blob:,同时保持script-src 'self'的限制就行。
内容的提问来源于stack exchange,提问作者Vaishali this side
相关产品推荐
相关产品推荐

