什么是http-header"X-XSS-Protection"?

mid*_*111 185 xss http http-headers

所以我现在一直在玩telnet来获取有趣的telnet(即只需键入telnet google.com 80并输入随机GET和带有不同标题的POST等)但我遇到了google.com在其标题中传输的内容不知道.

我一直在浏览http://www.w3.org/Protocols/rfc2616/rfc2616.html,并且没有找到谷歌似乎正在喷出的特定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
Run Code Online (Sandbox Code Playgroud)

谁知道是什么X-XSS-Protection

Luc*_*zzi 103

X-XSS-Protection是Internet Explorer 8(以及更新版本)可以理解的HTTP标头.此标头允许域打开和关闭IE8的"XSS过滤器",这可以防止某些类别的XSS攻击.IE8默认情况下已激活过滤器,但服务器可以通过设置关闭

   X-XSS-Protection: 0
Run Code Online (Sandbox Code Playgroud)

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

  • 这很模糊.这个标题究竟是**如何阻止XSS?所以现在IE看到`X-XSS-Protection:1`然后,它用什么算法来阻止XSS? (101认同)
  • 细节很难找到,因为它是一项专有技术.从本质上讲,IE监控浏览器发送到网站的任何可疑外观参数是否在解码后回复.例如,如果用户点击http://attack-me.com/%3E%3Cscript%3Ealert('XSS')%3B%3C%2Fscript%3E(这是"> <script> alert('XSS') )</ script>,并接收一个包含该脚本的页面,IE将阻止这一点. (11认同)
  • 因此,在我看来(很难找到证据)它只能防止反映XSS(http://www.infosecisland.com/blogview/11402-Cross-Site-Scripting-XSS-Some-Examples.html) ,也因为它没有任何意义来检测存储的XSS(也称为持久XSS). (11认同)
  • 嗯似乎像微软的营销一样,试图让IE看起来更好.... (11认同)
  • 嗯,它出现在营销上,但代码似乎有效.你可以在http://www.enhanceie.com/test/xss/BlockMode.asp上测试它(也在MSDN博客文章中链接). (5认同)
  • 所以它主要是"内容 - 安全 - 政策"的穷人版本? (5认同)
  • 另请注意,IE8中的实现实际上存在问题:http://hackademix.net/2009/11/21/ies-xss-filter-creates-xss-vulnerabilities/.我通过https://github.com/evilpacket/helmet/issues/26上的讨论找到了这个 (4认同)

Fab*_* Sa 58

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

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

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

/!\ Warning,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 /准则换设定安全-页眉/

  • 为了记录,修复了IE8错误(CVE-2009-4074) (6认同)
  • 请注意,“0”是此标头的唯一安全值。有关详细信息,请参阅 /sf/answers/4046144931/。 (2认同)

Luc*_*cky 46

此响应标头可用于配置用户代理的内置反射XSS保护.目前,只有微软的Internet Explorer,谷歌Chrome和Safari(WebKit)支持这个标题.

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

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

标头X-XSS-Protection: 1; mode=block启用XSS过滤器.检测到XSS攻击时,浏览器将阻止呈现页面,而不是清理页面.

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

X-XSS-Protection: 1; mode=block
Run Code Online (Sandbox Code Playgroud)

如果存在此令牌,如果检测到潜在的XSS Reflection攻击,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 Filter作为IE8组件运行,可以查看流经浏览器的所有请求/响应.当过滤器在跨站点请求中发现可能的XSS时,如果在服务器的响应中重放该过滤器,则它会识别并发生攻击.用户不会收到他们无法回答的问题 - IE只是阻止恶意脚本执行.

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

IE8 XSS攻击通知

页面已被修改,XSS攻击被阻止.

在这种情况下,XSS筛选器已在URL中识别出跨站点脚本攻击.当已识别的脚本重放回响应页面时,它已将此攻击归为绝.通过这种方式,过滤器无需修改对服务器的初始请求或阻止整个响应即可生效.

当Windows Internet Explorer 8检测并缓解跨站点脚本(XSS)攻击时,将记录跨站点脚本过滤器事件.当一个网站(通常是恶意网站)将JavaScript代码注入(添加)到另一个网站的合法请求时,就会发生跨站点脚本攻击.原始请求通常是无辜的,例如到另一页面的链接或提供公共服务(例如留言簿)的公共网关接口(CGI)脚本.注入的脚本通常尝试访问第二个网站不打算允许的特权信息或服务.响应或请求通常会将结果反映回恶意网站.XSS Filter是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
Run Code Online (Sandbox Code Playgroud)

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

  • 请注意,“X-XSS-Protection: 0”是此功能的唯一安全标头。有关详细信息,请参阅 /sf/answers/4046144931/ (3认同)

Mik*_*nen 23

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

长答案:

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

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

有问题的部分是“启发式”和“绝育”。启发式方法会导致误报,并且无法安全地进行绝育,因为它会导致副作用,可用于在完全安全的网站上实施XSS 攻击和旁道数据攻击。

不好的部分是,如果网站不发出标头,X-XSS-Protection那么浏览器的行为就好像标头X-XSS-Protection: 1已经发出一样。最糟糕的是,这个值是这个头的所有可能值中最不安全的值!

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

X-XSS-Protection: 1允许攻击者有选择地阻止部分 JavaScript 并保持其余脚本运行。这是可能的,因为此功能的启发式只是“如果在页面源的脚本部分找到任何 GET 参数的值,脚本将自动以依赖于用户代理的方式修改”。在实践中,攻击者可以例如添加查询参数?disablexss=<script%20src="framebuster.js",浏览器会自动<script src="framebuster.js"从实际页面源中删除该字符串。请注意,页面的其余部分继续执行 JavaScript,攻击者只是有选择地删除了这部分页面安全性。在实践中,页面源中的任何 JS 都可以修改。在某些情况下,可以使用具有反射内容的没有 XSS 漏洞的页面在页面上运行选定的 JavaScript。错误地将纯文本数据转换为可执行的 JavaScript 代码。(即,将普通DOM文本节点内的文本数据转化为<script>标签内容并执行!)

X-XSS-Protection: 1; mode=block允许攻击者通过将页面的行为用作侧信道来从页面源泄漏数据。例如,如果页面包含沿行的 JavaScript 代码var csrf_secret="521231347843",攻击者只需添加一个额外的参数,例如leak=var%20csrf_secret="3,如果页面未被阻止,3则第一个数字不正确。攻击者再次尝试,这一次leak=var%20csrf_secret="5页面加载将被中止。这允许攻击者知道秘密的第一个数字是5。然后攻击者继续猜测下一个数字。这允许一次一个数字或<script>源中的任何其他秘密值轻松地暴力破解 CSRF 秘密。

最后,如果你的站点充满了XSS反射攻击,使用默认值1会稍微减少攻击面。但是,如果您的站点是安全的并且您没有发出X-XSS-Protection: 0,那么您的站点将容易受到任何支持此功能的浏览器的攻击。如果您希望浏览器对站点上未知的 XSS 漏洞进行深度防御,请使用严格的Content-Security-Policy标头并继续发送0此错误功能。这不会使您的网站面临任何已知漏洞。

目前该功能在 MSIE、Safari 和 Google Chrome 中默认启用。这曾经在 Edge 中启用,但微软已经从 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-en https://bugs.chromium.org/p/chromium/issues/detail?id=396544 https:// bugs.chromium.org/p/chromium/issues/detail?id=498982


小智 9

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

X-XSS-Protection:此标头支持内置于最新Web浏览器中的跨站点脚本(XSS)过滤器.它通常默认启用,因此此标头的作用是重新启用此特定网站的过滤器(如果用户已禁用).IE 8+和Chrome中支持此标头(不确定是哪个版本).Chrome 4中添加了反XSS过滤器.如果该版本符合此标题,则无法识别.