在我的网站上,文件可以通过
等网址共享“/ file / file_id”,
并且服务器也发送完全文件内容,同时指定 filename 。
我想我应该对Content-Type标题做些什么。如果我说
Content-Type: "image"
Firefox也很乐意执行html文件。它似乎可以通过
Content-Type: "image/jpeg"
对于一个我认为不得不说“我是一个形象!”标准应该足够了。例如,有一个拼写错误(离开“jpeg”),我可以利用我的整个网站。此外,我现在必须照顾所有常见的图像类型并为它们实现标题。
其次如果有一个标题(不要执行)会很棒。有吗?
我查看了一些“X-XSS-Protection”标题,但它看起来像只有IE才知道的其他东西。对不起,如果在某处得到了解答,我还没找到。
答案 0 :(得分:2)
X-Content-Type-Options: nosniff
让浏览器尊重你发送的Content-Type
,所以如果你只小心发送已知安全类型(例如不是 SVG!),它就没事了。
还有CSP可能是第二道防线:
Content-Security-Policy: default-src 'none'
对完全不同的顶级域名中的安全性主机第三方内容非常谨慎的网站(以获得同源策略保护并避免通过受损子域注入cookie)。
答案 1 :(得分:1)
传统上,有许多方法可以规避不同的保护措施。因此,完全防御依赖于多种机制(纵深防御)。
大多数大型公司通过在自定义域(例如googleusercontent.com)上托管此类文件来解决此问题。如果攻击者能够在这样的域上执行脚本,那么至少不能让XSS访问主网站。
X-Content-Type-Options是一个非标准的标题,直到最近才在Firefox中支持,但它仍然是防御的一部分。可以构造有多种格式的文件(我有一个“有效”的文件,gif,html,javascript和pdf)。
通常可以直接提供图像(使用x-content-type-options)。
其他文件可以使用内容类型text / plain提供,而使用“Content-Disposition:attachment”服务其他文件则强制下载而不是在浏览器中显示它们。