http - Content-Security-Policy 标头是否仅适用于 text/html Content-Type?
问题描述
从 OWASP 的网站 https://cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html:
从您的 Web 服务器发送 Content-Security-Policy HTTP 响应标头。
内容安全策略:...
使用标头是首选方式,并且支持完整的 CSP 功能集。在所有 HTTP 响应中发送它,而不仅仅是索引页面。
我不明白这怎么可能是真的,因为可以通过在 HTML 中使用元标记来设置 Content-Security-Policy。我也看不出该政策如何适用于 HTML 页面以外的任何其他内容。
有谁知道为什么要做出上述声明以及仅发送 HTTP 标头Content-Security-Policy
进行text/html
响应是否安全?
顺便说一句,策略太大了,我想发送尽可能少的字节。
解决方案
这仍然是没有正式指定的东西,对此仍有一些争论:https ://github.com/w3c/webappsec/issues/520
一般来说,这里有两个论点:
一方面,其他一些文件类型(XML、PDF,甚至可能是 SVG)可以从 CSP 中受益,并且任何资源都可以通过右键单击并在单独的选项卡中打开来成为页面。
另一方面,CSP 可能会变得非常大,并且通常是为 HTML 页面编写的。所以发送其他资源有点浪费,而且大部分都不相关。
正确的答案(如上所述)可能是对所有非 HTML 响应减少且非常严格的 CSP。
但我认为对于大多数人来说,仅将它放在 HTML 上就足够了,并带来了 CSP 的大部分好处。再一次,CSP 是一种先进的技术,所以如果能做到这一点,那为什么不正确地做呢?
推荐阅读
- python - SAM 命令失败:ImportError: cannot import name AliasedEventEmitter
- node.js - 使用节点数组创建 JSON 对象
- c# - 使用特定的数组计数
- python - 如何在 Django 休息框架中获取具有父模型的前键的子模型?
- jquery - jQuery:anime.js 到多个相同的目标
- java - Java:如何在 intellij 中使用图形?
- python - 在 Python 3.7 中打印一个倒置的直角三角形
- c++ - C++中变量名的困惑
- botframework - 如何在 bot 框架中调试通道数据?
- python - OpenCV 不需要像素间距来计算重投影误差吗?