HTTP“不执行!”头

时间:2016-08-05 18:44:22

标签: http http-headers xss

在我的网站上,文件可以通过

等网址共享

“/ file / file_id”,

并且服务器也发送完全文件内容,同时指定 filename

我想我应该对Content-Type标题做些什么。如果我说

Content-Type: "image" Firefox也很乐意执行html文件。它似乎可以通过

来解决

Content-Type: "image/jpeg"

对于一个我认为不得不说“我是一个形象!”标准应该足够了。例如,有一个拼写错误(离开“jpeg”),我可以利用我的整个网站。此外,我现在必须照顾所有常见的图像类型并为它们实现标题。

其次如果有一个标题(不要执行)会很棒。有吗?

我查看了一些“X-XSS-Protection”标题,但它看起来像只有IE才知道的其他东西。对不起,如果在某处得到了解答,我还没找到。

2 个答案:

答案 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”服务其他文件则强制下载而不是在浏览器中显示它们。