如何解决我应该禁用图像的 Content-Security-Policy 标头吗?
由于 Content-Security-Policy 标头主要用于防止 XSS attacks,因此我认为对于 .png、.jpg、.ico 和 .webp 文件禁用它也没有关系。因为它们通常不包含 HTML。
但我注意到的是:
当我不禁用图像文件的 CSP 标头时,它不允许浏览器在直接访问图像文件时为其提供 HTML 布局,例如,我的意思是:当您访问 example.com/image.jpg 时,在 chrome 中,图像背后有一个黑色背景,它在屏幕上居中。但是,当我打开 CSP 时,例如 chrome 在用户访问时为图像提供的每种样式都无效,因为 CSP 阻止了它。
现在,我的问题是:
我应该禁用图像文件的 CSP 标头吗?我没有看到为图像文件禁用它的任何明显缺点,但我只是想在这样做之前确定。
解决方法
CSP 很好。来自 MDN:
https://developers.google.com/web/fundamentals/security/
与其盲目相信服务器提供的一切,CSP 定义了 Content-Security-Policy HTTP 标头,它允许您 创建受信任内容来源的许可名单,并指示 浏览器仅执行或呈现来自这些来源的资源。
如果您完全使用 CSP,那么您应该全面使用它们。是的,图像文件可能“不那么容易受到攻击”。但它们仍然可以成为“攻击媒介”。例如:https://hackerone.com/reports/964550
您可能希望使用 img-src,而不是“禁用 CSP”:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/img-src
HTTP Content-Security-Policy img-src 指令指定有效 图片和网站图标的来源。
,我应该禁用图像文件的 CSP 标头吗?我没有看到为图像文件禁用它有任何明显的缺点,但我只是想在这样做之前确定一下。
是的,您应该禁用图像文件的 CSP 标头,它在与 png/jpg/ico 等...文件一起交付时不起作用。
您唯一可以使用 frame-ancestors
指令传送图像和视频,这可以防止这些文件成为 embedded info <iframe>
<object>
标签,但不会成为 <img>
/ <video>
标签。
CSP 应该仅针对 HTML/XSLT 文件发布,对于其他 MIME 类型它不起作用。
注意:要为工作人员指定内容安全策略,您需要publish CSP header with worker JS-file。
This XSS via images 示例 abt.
不要白费心思。
- 这个 XSS 不是通过图像文件,实际上图像中的 COMMENTS 被视为 HTML,因为
accounts.shopify.com
服务器在上传文件时没有检查 MIME 类型。因此,图像被加载并标记为 text/html,因此服务器将其作为 HTML 发送到浏览器。 - 此类图像无法在
<img>
标签内工作,只需插入“中毒”图像并查看。 -
img-src
指令不能防止此类情况发生。无论如何,此类图像都属于'self'
令牌限额。不要在'unsafe-inline'
中使用script-src
,仅此而已。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。