什么是HTTP标头“ X-XSS-Protection”?


194

因此,我一直在尝试通过HTTP在telnet中娱乐(例如,输入telnet google.com 80并放入带有不同标头等的随机GET和POST),但是我遇到了google.com在标头中传输的一些信息不知道

我一直在浏览http://www.w3.org/Protocols/rfc2616/rfc2616.html,却没有找到Google似乎在喷吐的特定http-header的定义:

GET / HTTP/1.1

HTTP/1.1 200 OK
Date: Wed, 01 Feb 2012 03:42:24 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: PREF=ID=6ddbc0a0342e7e63:FF=0:TM=1328067744:LM=1328067744:S=4d4farvCGl5Ww0C3; expires=Fri, 31-Jan-2014 03:42:24 GMT; path=/; domain=.google.com
Set-Cookie: NID=56=PgRwCKa8EltKnHS5clbFuhwyWsd3cPXiV1-iXzgyKsiy5RKXEKbg89gWWpjzYZjLPWTKrCWhOUhdInOlYU56LOb2W7XpC7uBnKAjMbxQSBw1UIprzw2BFK5dnaY7PRji; expires=Thu, 02-Aug-2012 03:42:24 GMT; path=/; domain=.google.com; HttpOnly
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Transfer-Encoding: chunked

1000

有人知道X-XSS-Protection吗?


6
FWIW,查找标头字段规范的“正确”位置不是 HTTP规范(当前为RFC 2616),而是IANA消息标头字段注册表(据说,它不在此处列出)
Julian Reschke,

1
@JulianReschke,为什么会这样?HTTP规范不应该对HTTP具有权威性吗?
Pacerier

1
HTTP规范将标头注册表委托给IANA。
朱利安·瑞施

Answers:


107

X-XSS-Protection是Internet Explorer 8(和更新版本)理解的HTTP标头。通过此标头,域可以打开和关闭IE8的“ XSS筛选器”,从而防止某些类别的XSS攻击。IE8默认情况下启用了筛选器,但是如果通过设置将其关闭,则服务器可以关闭

   X-XSS-Protection: 0

另请参见http://blogs.msdn.com/b/ieinternals/archive/2011/01/31/controlling-the-internet-explorer-xss-filter-with-the-x-xss-protection-http-header。 aspx


107
这是非常模糊的。究竟该标头如何阻止XSS?因此,现在IE可以看到X-XSS-Protection:1,然后使用什么算法来防止XSS?
Pacerier

11
细节是很难找到的,因为它是专有技术。实质上,IE会监视浏览器发送到网站的任何可疑参数是否在解码后的响应中返回。例如,如果用户单击Attack-me.com/…(即“> <script> alert('XSS')</ script>),并因此收到包含该脚本的页面,则IE会阻止该操作。
卡·英弗尼

11
因此,在我看来(很难找到证据)它仅能防止Reflected XSS(infosecisland.com/blogview/…),还因为它没有任何手段来检测存储的XSS(也称为持久XSS)。
卡·因弗尼齐

11
嗯似乎是微软试图使IE看起来更好的市场营销中的绒毛。–
Matej 2013年

5
嗯,它以市场营销的形式出现,但是代码似乎起作用了。您可以在这里进行测试(enhancedie.com/test/xss/BlockMode.asp(也在MSDN博客文章中链接))。
卡·因弗尼齐

61
  • X-XSS-Protection: 1 :强制XSS保护(如果用户禁用了XSS保护,则很有用)

  • X-XSS-Protection: 0 :禁用XSS保护

  • mode=block如果检测到潜在的XSS反射(=非持久性)攻击,则令牌将阻止浏览器(IE8 +和Webkit浏览器)呈现页面(而不是清除)。

/!\警告,mode=block在IE8中创建了一个漏洞(更多信息)。

更多信息:http : //blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspxhttp://blog.veracode.com / 2014/03 /准则设置安全标题/


6
根据记录,IE8错误已修复(CVE-2009-4074)
yakatz

developer.mozilla.org/es/docs/Web/HTTP/Headers/X-XSS-Protection在此链接中,我们可以找到X-XSS-Protection的描述
Maria Montenegro

1
请注意,这0是此标头的唯一安全值。有关详细信息,请参见stackoverflow.com/a/57802070/334451
Mikko Rantalainen

48

此响应标头可用于配置用户代理的内置反射XSS保护。当前,只有Microsoft的Internet Explorer,Google Chrome和Safari(WebKit)支持此标头。

Internet Explorer 8包括一项新功能,称为XSS Filter,可帮助防止反射的跨站点脚本攻击。默认情况下,此筛选器在Internet,受信任和受限制的安全区域中运行。本地Intranet区域页面可以使用相同的标头选择加入保护。

关于您在问题中发布的标题,

标头X-XSS-Protection: 1; mode=block启用XSS筛选器。当检测到XSS攻击时,浏览器将阻止呈现页面,而不是清除页面。

在2010年3月,我们在IE8中添加了对X-XSS-Protection标头中的新令牌mode = block的支持。

X-XSS-Protection: 1; mode=block

当存在此令牌时,如果检测到潜在的XSS反射攻击,则Internet Explorer将阻止呈现页面。IE不会尝试清理页面以外科方式消除XSS攻击,而是仅呈现“#”。

Internet Explorer识别出可能的跨站点脚本攻击。它记录事件并向用户显示适当的消息。MSDN文章介绍了此标头的工作方式。

此过滤器如何在IE中工作

有关本文的更多信息,https://blogs.msdn.microsoft.com/ie/2008/07/02/ie8-security-part-iv-the-xss-filter/

XSS筛选器作为IE8组件运行,可以查看流经浏览器的所有请求/响应。当筛选器在跨站点请求中发现可能的XSS时,如果在服务器响应中重播了该攻击,它将识别并过滤掉该攻击。不会向用户显示无法回答的问题-IE只是阻止了恶意脚本的执行。

使用新的XSS筛选器,遇到Type-1 XSS攻击的IE8 Beta 2用户将看到如下通知:

IE8 XSS攻击通知

该页面已被修改,并且XSS攻击已被阻止。

在这种情况下,XSS筛选器已在URL中识别出跨站点脚本攻击。由于已识别的脚本已重播到响应页面中,因此它已阻止了这种攻击。这样,过滤器将有效,而无需修改对服务器的初始请求或阻止整个响应。

Windows Internet Explorer 8检测并缓解跨站点脚本(XSS)攻击时,将记录跨站点脚本筛选器事件。当一个网站(通常是恶意网站)向其他网站的合法请求中注入(添加)JavaScript代码时,就会发生跨站点脚本攻击。原始请求通常是无害的,例如到另一个页面的链接或提供通用服务(例如留言簿)的通用网关接口(CGI)脚本。注入的脚本通常尝试访问第二个网站不打算允许的特权信息或服务。响应或请求通常将结果反映回恶意网站。XSS筛选器是Internet Explorer 8的新增功能,可检测URL和HTTP POST请求中的JavaScript。如果检测到JavaScript,XSS筛选器搜索反射的证据,如果未提交攻击请求,该信息将返回到攻击网站。如果检测到反射,则XSS筛选器会清理原始请求,以便无法执行其他JavaScript。然后,XSS筛选器将该操作记录为“跨站点脚本筛选器”事件。下图显示了经过修改以防止跨站点脚本攻击的站点示例。

来源:https : //msdn.microsoft.com/en-us/library/dd565647(v=vs.85).aspx

Web开发人员可能希望禁用其内容的过滤器。他们可以通过设置HTTP标头来实现:

X-XSS-Protection: 0

有关安全标头的更多信息,


1
请注意,这X-XSS-Protection: 0是此功能的唯一安全标头。有关详细信息,请参见 stackoverflow.com/a/57802070/334451
Mikko Rantalainen

10

您可以在此有用的HTTP标头列表中看到。

X-XSS-Protection:此标头启用内置在最新Web浏览器中的跨站点脚本(XSS)筛选器。无论如何,通常默认情况下都会启用它,因此,如果用户禁用了此特定网站,则此标头的作用是重新为其启用过滤器。IE 8+和Chrome(不知道哪个版本)均支持此标头。在Chrome 4中添加了抗XSS过滤器。如果该版本支持此标头,则未知。


不幸的是,此功能会导致安全问题,并且只有安全值是X-XSS-Protection: 0。有关详细信息,请参阅stackoverflow.com/a/57802070/334451
Mikko Rantalainen

8

TL; DR:所有编写良好的网站(/ apps)都必须发出标头,X-XSS-Protection: 0而只是忘记了此功能。如果要获得更好的用户代理可以提供的额外安全性,请使用严格的Content-Security-Policy标头。

长答案:

HTTP标头X-XSS-Protection是Microsoft在Internet Explorer 8.0(MSIE 8)中引入的那些东西之一,旨在提高错误编写网站的安全性。

这个想法是应用某种启发式方法来尝试检测反射XSS攻击并自动使攻击无效。

其中有问题的部分是“启发式”和“中性化”。启发式方法会导致误报,绝不能安全地进行绝育,因为它会导致副作用,可用于在完全安全的网站上实施 XSS攻击和DoS攻击。

不好的部分是,如果网站不发出标题,X-XSS-Protection则浏览器的行为就像X-XSS-Protection: 1发出了标题一样。更糟糕的是,此值是此标头中所有可能值中最不安全的值!

对于给定的安全网站(即该网站没有反射XSS漏洞),此“ XSS保护”功能允许进行以下攻击:

X-XSS-Protection: 1允许攻击者有选择地阻止JavaScript的某些部分并保持其余脚本的运行。这是可能的,因为此功能的启发方式很简单:“如果在页面源的脚本部分中找到任何GET参数的值,则脚本将以用户代理相关的方式自动进行修改”。实际上,攻击者可以例如添加参数disablexss=<script src="framebuster.js",浏览器将自动<script src="framebuster.js"从实际页面源中删除字符串。请注意,页面的其余部分继续运行,攻击者只是删除了页面安全性的这一部分。实际上,可以修改页面源代码中的任何JS。在某些情况下,由于中性,可以使用没有XSS漏洞且具有反映内容的页面来在页面上运行选定的JavaScript。不正确地将纯文本数据转换为可执行的JavaScript代码

X-XSS-Protection: 1; mode=block允许攻击者通过使用页面的行为作为辅助渠道从页面源泄漏数据。例如,如果页面中包含的JavaScript代码var csrf_secret="521231347843",则攻击者只需添加一个额外的参数,例如leak=var%20csrf_secret="3,如果页面未被阻止,则攻击者3其第一位数字是错误的。攻击者再次尝试,这一次leak=var%20csrf_secret="5页面加载将被中止。这使攻击者知道秘密的第一位数字是5。然后,攻击者继续猜测下一位数字。

最后,如果您的站点充满了XSS反射攻击,则使用默认值1会稍微减少攻击面。但是,如果您的网站是安全的并且您不会发出X-XSS-Protection: 0,则您的网站可能会受到支持该功能的任何浏览器的攻击。如果您希望浏览器提供深度防御来防御您站点上未知的XSS漏洞,请使用严格的Content-Security-Policy标头。这不会使您的网站面临已知漏洞。

当前,默认情况下在MSIE,Safari和Google Chrome中启用此功能。该功能曾经在Edge中启用,但是 Microsoft已经从Edge中删除了此功能。Mozilla Firefox从未实现此目的。

也可以看看:

https://homakov.blogspot.com/2013/02/hacking-facebook-with-oauth2-and-chrome.html https://blog.innerht.ml/the-misunderstood-x-xss-protection/ http:// /p42.us/ie8xss/Abusing_IE8s_XSS_Filters.pdf https://www.slideshare.net/masatokinugawa/xxn-zh-TW https://bugs.chromium.org/p/chromium/issues/detail?id=396544 https:// bugs.chromium.org/p/chromium/issues/detail?id=498982

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.