Ich habe jetzt zum Spaß in Telnet mit HTTP herumgespielt (dh nur telnet google.com 80
zufällige GETs und POSTs mit unterschiedlichen Headern und dergleichen eingegeben und eingegeben), aber ich bin auf etwas gestoßen, das google.com in seinen Headern überträgt, die ich habe Ich weiß es nicht.
Ich habe http://www.w3.org/Protocols/rfc2616/rfc2616.html durchgesehen und keine Definition für diesen bestimmten http-Header gefunden, den Google anscheinend herausspritzt:
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
Weiß jemand was X-XSS-Protection
ist?
http
http-headers
xss
midc111
quelle
quelle
Antworten:
X-XSS-Protection ist ein HTTP-Header, der von Internet Explorer 8 (und neueren Versionen) verstanden wird. Mit diesem Header können Domänen den "XSS-Filter" von IE8 ein- und ausschalten, wodurch einige Kategorien von XSS-Angriffen verhindert werden. In IE8 ist der Filter standardmäßig aktiviert, aber Server können ihn durch Einstellung ausschalten
Siehe auch http://blogs.msdn.com/b/ieinternals/archive/2011/01/31/controlling-the-internet-explorer-xss-filter-with-the-x-xss-protection-http-header. aspx
quelle
X-XSS-Protection:1
und welchen Algorithmus verwendet er, um XSS zu verhindern?X-XSS-Protection: 1
: XSS-Schutz erzwingen (nützlich, wenn der Benutzer den XSS-Schutz deaktiviert hat)X-XSS-Protection: 0
: Deaktivieren Sie den XSS-SchutzDas Token
mode=block
verhindert, dass Browser (IE8 + - und Webkit-Browser) Seiten rendern (anstatt zu bereinigen), wenn ein potenzieller XSS-Reflexionsangriff (= nicht persistent) erkannt wird./! \ Warnung,
mode=block
erstellt eine Sicherheitsanfälligkeit in IE8 ( weitere Informationen ).Weitere Informationen: http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspx und http://blog.veracode.com / 2014/03 / Richtlinien zum Einstellen von Sicherheitsheadern /
quelle
0
der einzige sichere Wert für diesen Header ist. Weitere Informationen finden Sie unter stackoverflow.com/a/57802070/334451 .Dieser Antwortheader kann verwendet werden, um den integrierten reflektierenden XSS-Schutz eines Benutzeragenten zu konfigurieren. Derzeit unterstützen nur Microsoft Internet Explorer, Google Chrome und Safari (WebKit) diesen Header.
Internet Explorer 8 enthielt eine neue Funktion, mit der reflektierte Cross-Site-Scripting-Angriffe verhindert werden können, den so genannten XSS-Filter . Dieser Filter wird standardmäßig in den Sicherheitszonen Internet, Vertrauenswürdig und Eingeschränkt ausgeführt. Lokale Intranetzonenseiten können den Schutz mit demselben Header aktivieren.
Über den Header, den Sie in Ihrer Frage gepostet haben,
Der Header
X-XSS-Protection: 1; mode=block
aktiviert den XSS-Filter. Anstatt die Seite zu bereinigen, verhindert der Browser das Rendern der Seite, wenn ein XSS-Angriff erkannt wird.Wie dieser Filter im IE funktioniert ,
Weitere Informationen zu diesem Artikel finden Sie unter https://blogs.msdn.microsoft.com/ie/2008/07/02/ie8-security-part-iv-the-xss-filter/
Quelle: https://msdn.microsoft.com/en-us/library/dd565647(v=vs.85).aspx
Webentwickler möchten möglicherweise den Filter für ihren Inhalt deaktivieren. Sie können dies tun, indem Sie einen HTTP-Header festlegen:
Mehr zu Sicherheitsköpfen in,
Richtlinien zum Festlegen von Sicherheitskopfzeilen
Sicherheits-HTTP-Header - X-XSS-PROTECTION
MDN Docs X-XSS-Schutz
quelle
X-XSS-Protection: 0
der einzige sichere Header für diese Funktion ist. Weitere Informationen finden Sie unter stackoverflow.com/a/57802070/334451Sie können in dieser Liste nützliche HTTP-Header sehen .
quelle
X-XSS-Protection: 0
. Weitere Informationen finden Sie unter stackoverflow.com/a/57802070/334451TL; DR: Alle gut geschriebenen Websites (/ Apps) müssen Header ausgeben
X-XSS-Protection: 0
und diese Funktion einfach vergessen. Wenn Sie zusätzliche Sicherheit wünschen, die bessere Benutzeragenten bieten können, verwenden Sie einen strengenContent-Security-Policy
Header.Lange Antwort:
Der HTTP-Header
X-XSS-Protection
ist eines der Dinge, die Microsoft in Internet Explorer 8.0 (MSIE 8) eingeführt hat, um die Sicherheit falsch geschriebener Websites zu verbessern.Die Idee ist, eine Art Heuristik anzuwenden, um zu versuchen, einen Reflexions-XSS-Angriff zu erkennen und den Angriff automatisch zu neutralisieren.
Der problematische Teil davon ist "Heuristik" und "Kastration". Die Heuristik führt zu Fehlalarmen und die Kastration kann nicht sicher durchgeführt werden, da sie Nebenwirkungen verursacht, mit denen XSS-Angriffe und DoS-Angriffe auf absolut sichere Websites implementiert werden können.
Der schlechte Teil ist, dass sich
X-XSS-Protection
der Browser so verhält, als ob der Header ausgegebenX-XSS-Protection: 1
worden wäre , wenn eine Website den Header nicht ausgibt. Das Schlimmste ist, dass dieser Wert der am wenigsten sichere Wert aller möglichen Werte für diesen Header ist!Für eine gegebene sichere Website dieses „XSS - Schutz“ -Funktion (das heißt, funktioniert die Seite nicht Reflexion XSS - Schwachstellen hat) ermöglicht folgende Angriffe:
X-XSS-Protection: 1
Ermöglicht dem Angreifer, Teile von JavaScript selektiv zu blockieren und den Rest der Skripte am Laufen zu halten. Dies ist möglich, weil die Heuristiken dieser Funktion einfach lauten: "Wenn der Wert eines GET-Parameters im Skriptteil der Seitenquelle gefunden wird, wird das Skript automatisch in Abhängigkeit vom Benutzeragenten geändert." In der Praxis kann der Angreifer z. B. Parameter hinzufügen,disablexss=<script src="framebuster.js"
und der Browser entfernt die Zeichenfolge automatisch<script src="framebuster.js"
aus der eigentlichen Seitenquelle. Beachten Sie, dass der Rest der Seite weiterhin ausgeführt wird und der Angreifer diesen Teil der Seitensicherheit entfernt hat. In der Praxis kann jedes JS in der Seitenquelle geändert werden. In einigen Fällen kann eine Seite ohne XSS-Sicherheitsanfälligkeit mit reflektiertem Inhalt verwendet werden, um aufgrund der Kastration ausgewähltes JavaScript auf einer Seite auszuführen indem er Klartextdaten fälschlicherweise in ausführbaren JavaScript-Code umwandelt .X-XSS-Protection: 1; mode=block
Ermöglicht es dem Angreifer, Daten aus der Seitenquelle zu verlieren, indem das Verhalten der Seite als Seitenkanal verwendet wird. Wenn die Seite beispielsweise JavaScript-Code invar csrf_secret="521231347843"
Anlehnung an enthält , fügt der Angreifer einfach einen zusätzlichen Parameter hinzu, z. B.leak=var%20csrf_secret="3
und wenn die Seite NICHT blockiert ist, wird der3
war die erste Ziffer falsch. Der Angreifer versucht es erneut, diesmal wirdleak=var%20csrf_secret="5
das Laden der Seite abgebrochen. Dadurch kann der Angreifer erkennen, dass die erste Ziffer des Geheimnisses ist5
. Der Angreifer errät dann weiterhin die nächste Ziffer.Wenn Ihre Site voll von XSS-Reflexionsangriffen ist,
1
wird die Angriffsfläche durch Verwendung des Standardwerts von ein wenig reduziert. Wenn Ihre Site jedoch sicher ist und Sie nicht emittierenX-XSS-Protection: 0
, ist Ihre Site für jeden Browser anfällig, der diese Funktion unterstützt. Wenn Sie eine umfassende Unterstützung von Browsern gegen noch unbekannte XSS-Schwachstellen auf Ihrer Website wünschen, verwenden Sie einen strengenContent-Security-Policy
Header. Dadurch wird Ihre Website nicht für bekannte Sicherheitslücken geöffnet.Derzeit ist diese Funktion in MSIE, Safari und Google Chrome standardmäßig aktiviert. Dies war früher in Edge aber aktiviert Microsoft hat diese Fehlfunktion bereits aus Edge entfernt . Mozilla Firefox hat dies nie implementiert.
Siehe auch:
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-de https://bugs.chromium.org/p/chromium/issues/detail?id=396544 https: // bugs.chromium.org/p/chromium/issues/detail?id=498982
quelle