Http-başlığı “X-XSS-Protection” nedir?


194

Bu yüzden şimdi telnet google.com 80telnet'te eğlence için HTTP ile oynuyorum (yani sadece farklı başlıklar ve benzerleri ile rastgele GET'leri ve POST'ları giriyorum), ancak google.com'un bu başlıklarda ilettiği bir şeyle karşılaştım bilmiyorum.

Ben http://www.w3.org/Protocols/rfc2616/rfc2616.html üzerinden baktım ve google'ın tükeniyor gibi görünen bu http başlığı için bir tanım bulamadım:

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

Ne X-XSS-Protectionolduğunu bilen var mı?


6
Başlık alanı teknik özelliklerine bakmak için "doğru" yer olan FWIW, HTTP özelliği değil (şu anda RFC 2616), ancak IANA ileti başlığı alanları kayıt defteri (şu anda orada listelenmiyor)
Julian Reschke

1
@JulianReschke, Neden böyle? HTTP özellikleri HTTP'de yetkili olmamalı mı?
Pacerier

1
HTTP spesifikasyonu başlık kaydını IANA'ya devreder.
Julian Reschke

Yanıtlar:


107

X-XSS-Protection, Internet Explorer 8 (ve daha yeni sürümleri) tarafından anlaşılan bir HTTP üst bilgisidir. Bu üstbilgi, bazı XSS ​​saldırı kategorilerini engelleyen alan adlarının IE8'in "XSS Filtresi" ni açıp kapatmasına olanak tanır. IE8'de filtre varsayılan olarak etkinleştirilmiştir, ancak sunucular ayarlanarak kapanabilir

   X-XSS-Protection: 0

Ayrıca bkz . Http://blogs.msdn.com/b/ieinternals/archive/2011/01/31/controlling-the-internet-explorer-xss-filter-with-the-x-xss-protection-http-header. aspx


108
Bu çok belirsiz. Bu başlık XSS'yi nasıl önler? Yani şimdi IE görür X-XSS-Protection:1ve XSS'yi önlemek için hangi algoritmayı kullanır?
Pacerier

11
Tescilli bir teknoloji olduğu için detayları bulmak zor. Temel olarak, IE, tarayıcının bir web sitesine gönderdiği şüpheli görünen parametrelerden herhangi birinin kodu çözülen yanıtta geri dönüp dönmediğini izler. Örneğin, bir kullanıcı attack-me.com/… ("> <script> uyarısı ('XSS') </script> 'i tıklar ve sonuç olarak bu komut dosyasını içeren bir sayfa alırsa IE bunu engeller.
Luca Invernizzi

11
Bu nedenle, sadece Yansıyan XSS'ye ( infosecisland.com/blogview/… ) karşı koruduğunu ( kanıtlanması zor ) görünüyor, çünkü Saklanan XSS'yi (Kalıcı XSS ​​olarak da bilinir) tespit etmek için herhangi bir anlamı yok.
Luca Invernizzi

11
hmm IE daha iyi görünmesi için microsoft tarafından pazarlama etrafında kabartmak gibi görünüyor ....
Matej

5
Peki, pazarlama havasında sunuluyor, ancak kod işe yarıyor gibi görünüyor. Bunu burada test edebilirsiniz. Enhanie.com/test/xss/BlockMode.asp (ayrıca MSDN blog yayınına da bağlıdır).
Luca Invernizzi

61
  • X-XSS-Protection: 1 : XSS korumasını zorla (XSS koruması kullanıcı tarafından devre dışı bırakılmışsa yararlıdır)

  • X-XSS-Protection: 0 : XSS korumasını devre dışı bırak

  • Belirteç mode=block, potansiyel bir XSS yansıması (= kalıcı olmayan) saldırı algılanırsa tarayıcının (IE8 + ve Webkit tarayıcıları) sayfaları temizlemesini (sterilize etmek yerine) engeller.

/! \ Uyarı, mode=blockIE8'de bir güvenlik açığı oluşturur ( daha fazla bilgi ).

Daha fazla bilgi: http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspx ve http://blog.veracode.com / 2014/03 / kılavuzlar-için-ayar-güvenlik-başlıklarıyla /


6
Kayıt için IE8 hatası düzeltildi (CVE-2009-4074)
yakatz


1
0Bu başlık için tek güvenli değer olduğunu unutmayın . Ayrıntılar için stackoverflow.com/a/57802070/334451 adresine bakın.
Mikko Rantalainen

49

Bu yanıt başlığı, bir kullanıcı aracısının yerleşik yansıtıcı XSS ​​korumasını yapılandırmak için kullanılabilir. Şu anda, yalnızca Microsoft'un Internet Explorer, Google Chrome ve Safari (WebKit) bu başlığı desteklemektedir.

Internet Explorer 8, XSS Filtresi olarak bilinen yansıtılmış siteler arası komut dosyası saldırılarını önlemeye yardımcı olan yeni bir özellik içeriyordu . Bu filtre Internet, Güvenilir ve Kısıtlı güvenlik bölgelerinde varsayılan olarak çalışır. Yerel İntranet bölgesi sayfaları, aynı üstbilgiyi kullanarak korumayı seçebilir.

Sorunuzda yayınladığınız başlık hakkında,

Başlık X-XSS-Protection: 1; mode=block, XSS Filtresini etkinleştirir. Sayfayı sterilize etmek yerine, bir XSS saldırısı algılandığında, tarayıcı sayfanın oluşturulmasını önleyecektir.

2010 yılının Mart ayında, X-XSS-Protection üstbilgisinde, mode = block yeni bir belirteç için IE8 desteğine ekledik.

X-XSS-Protection: 1; mode=block

Bu belirteç bulunduğunda, olası bir XSS Yansıma saldırısı algılanırsa, Internet Explorer sayfanın oluşturulmasını önler. XSS saldırısını cerrahi olarak kaldırmak için sayfayı sterilize etmek yerine IE sadece “#” oluşturur.

Internet Explorer olası bir siteler arası komut dosyası çalıştırma saldırısını tanır. Olayı günlüğe kaydeder ve kullanıcıya uygun bir mesaj görüntüler. MSDN makalesinde bu başlığın nasıl çalıştığı açıklanmaktadır.

Bu filtre IE'de nasıl çalışır ,

Bu makale hakkında daha fazla bilgi, https://blogs.msdn.microsoft.com/ie/2008/07/02/ie8-security-part-iv-the-xss-filter/

XSS Filtresi, tarayıcıdan akan tüm isteklere / yanıtlara görünürlük sağlayan bir IE8 bileşeni olarak çalışır. Filtre, siteler arası bir istekte olası XSS'yi keşfettiğinde, sunucunun yanıtında yeniden oynatılırsa saldırıyı tanımlar ve bulaştırır. Kullanıcılara cevap veremedikleri sorular sunulmaz - IE kötü amaçlı komut dosyasının yürütülmesini engeller.

Yeni XSS Filtresi ile, Type-1 XSS saldırısıyla karşılaşan IE8 Beta 2 kullanıcıları aşağıdaki gibi bir bildirim görecek:

IE8 XSS Saldırı Bildirimi

Sayfa değiştirildi ve XSS saldırısı engellendi.

Bu durumda, XSS Filtresi URL'de siteler arası komut dosyası çalıştırma saldırısı tanımlamıştır. Belirlenen komut dosyası yanıt sayfasına yeniden oynatıldığı için bu saldırıyı kısalttı. Bu şekilde filtre, sunucuya yapılan ilk isteği değiştirmeden veya tüm yanıtı engellemeden etkilidir.

Windows Internet Explorer 8 bir siteler arası komut dosyası (XSS) saldırısı algıladığında ve azalttığında Siteler Arası Komut Dosyası Filtresi olayı günlüğe kaydedilir. Siteler arası komut dosyası saldırıları, genellikle kötü amaçlı olan bir web sitesi, başka bir web sitesine yapılan meşru isteklere JavaScript kodu eklediğinde (eklediğinde) oluşur. Orijinal istek genellikle başka bir sayfaya bağlantı veya ortak bir hizmet (bir ziyaretçi defteri gibi) sağlayan bir Ortak Ağ Geçidi Arabirimi (CGI) komut dosyası gibi masumdur. Enjekte edilen komut dosyası genellikle ikinci web sitesinin izin vermek istemediği ayrıcalıklı bilgilere veya hizmetlere erişmeye çalışır. Yanıt veya istek genellikle kötü amaçlı web sitesine sonuçları yansıtır. Internet Explorer 8'de yeni olan XSS Filtresi, URL'de JavaScript ve HTTP POST isteklerini algılar. JavaScript algılanırsa, XSS Filtresi, saldırı isteği değişmeden gönderilirse saldıran web sitesine döndürülecek bilgileri, yansıma kanıtlarını arar. Yansıma algılanırsa, XSS Filtresi orijinal isteği ek JavaScript'in yürütülememesi için sterilize eder. XSS Filtresi daha sonra bu eylemi Siteler Arası Komut Dosyası Filtresi olayı olarak günlüğe kaydeder. Aşağıdaki resimde siteler arası komut dosyası saldırılarını önlemek için değiştirilmiş bir site örneği gösterilmektedir.

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

Web geliştiricileri, içerikleri için filtreyi devre dışı bırakmak isteyebilir. Bir HTTP üstbilgisi ayarlayarak bunu yapabilirler:

X-XSS-Protection: 0

İçindeki güvenlik başlıkları hakkında daha fazla bilgi,


1
X-XSS-Protection: 0Bu özelliğin tek güvenli başlığı olduğunu unutmayın . Ayrıntılar için bkz. Stackoverflow.com/a/57802070/334451
Mikko Rantalainen

10

Bu yararlı HTTP üstbilgileri Listesinde görebilirsiniz .

X-XSS Koruması: Bu başlık, en son web tarayıcılarında yerleşik Siteler arası komut dosyası (XSS) filtresini etkinleştirir. Genellikle varsayılan olarak etkindir, bu nedenle bu üstbilginin rolü, kullanıcı tarafından devre dışı bırakılmışsa bu belirli web sitesi için filtreyi yeniden etkinleştirmektir. Bu başlık IE 8+ ve Chrome'da desteklenmektedir (hangi sürümlerden emin değilsiniz). Anti-XSS filtresi Chrome 4'e eklendi. Bu sürüm bu üstbilgiyi onurlandırıyorsa bilinmemektedir.


Ne yazık ki, bu özellik güvenlik sorunlarına neden olur ve sadece güvenli değerdir X-XSS-Protection: 0. Ayrıntılar için bkz. Stackoverflow.com/a/57802070/334451
Mikko Rantalainen

9

TL; DR: İyi yazılmış tüm web siteleri (/ apps) başlık yayınlamalı X-XSS-Protection: 0ve sadece bu özelliği unutmalıdır. Daha iyi kullanıcı aracılarının sağlayabileceği ekstra güvenliğe sahip olmak istiyorsanız, katı bir Content-Security-Policybaşlık kullanın .

Uzun cevap:

HTTP başlığı X-XSS-Protection, Microsoft'un Internet Explorer 8.0'da (MSIE 8) tanıttığı ve yanlış yazılmış web sitelerinin güvenliğini artırdığı düşünülen şeylerden biridir.

Fikir, yansıma XSS saldırısını tespit etmek ve saldırıyı otomatik olarak kısmak için bir çeşit buluşsal yöntem uygulamaktır.

Bunun sorunlu kısmı "sezgisel tarama" ve "kısırlaştırma" dır. Buluşsal yöntemler yanlış pozitiflere neden olur ve kısırlaştırma, güvenli bir şekilde yapılamaz çünkü XSS saldırılarını ve DoS saldırılarını mükemmel güvenli web sitelerine uygulamak için kullanılabilecek yan etkilere neden olur .

Kötü yanı, bir web sitesi üstbilgiyi yaymazsa X-XSS-Protection, tarayıcının üstbilgi yayılmış gibi davranmasıdır X-XSS-Protection: 1. Daha da kötüsü, bu değerin bu başlık için olası tüm değerlerin en az güvenli değeri olmasıdır!

Belirli bir güvenli web sitesi için (yani sitenin yansıma XSS güvenlik açıkları yoktur) bu "XSS koruması" özelliği aşağıdaki saldırılara izin verir :

X-XSS-Protection: 1saldırganın JavaScript'in bölümlerini seçerek engellemesine ve komut dosyalarının geri kalanının çalışmaya devam etmesine olanak tanır. Bu mümkündür, çünkü bu özelliğin buluşsal yöntemi basitçe "sayfa kaynağının kodlama kısmında herhangi bir GET parametresinin değeri bulunursa, komut dosyası otomatik olarak kullanıcı aracısına bağlı olarak değiştirilecektir". Pratikte, saldırgan parametre ekleyebilir disablexss=<script src="framebuster.js"ve tarayıcı dizeyi <script src="framebuster.js"gerçek sayfa kaynağından otomatik olarak kaldıracaktır . Sayfanın geri kalanının çalışmaya devam ettiğini ve saldırganın sayfa güvenliğinin bu kısmını kaldırdığını unutmayın. Uygulamada, sayfa kaynağındaki herhangi bir JS değiştirilebilir. Bazı durumlarda, XSS güvenlik açığı bulunmayan içeriğe sahip bir sayfa, kısırlaştırma nedeniyle seçilen JavaScript'i sayfada çalıştırmak için kullanılabilirdüz metin verilerini yanlış çalıştırılabilir JavaScript koduna dönüştürüyor .

X-XSS-Protection: 1; mode=blocksaldırganın sayfanın davranışını yan kanal olarak kullanarak sayfa kaynağından veri sızdırmasına izin verir. Örneğin, sayfa satırları boyunca JavaScript kodu içeriyorsa var csrf_secret="521231347843", saldırgan ek bir parametre ekler örn. leak=var%20csrf_secret="3Ve sayfa engellenmezse, 3ilk basamak yanlıştır. Saldırgan tekrar dener, bu sefer leak=var%20csrf_secret="5sayfa yükleme iptal edilir. Bu, saldırganın sırrının ilk basamağının olduğunu bilmesini sağlar 5. Saldırgan daha sonra bir sonraki rakamı tahmin etmeye devam eder.

Sonunda, siteniz XSS yansıma saldırılarıyla doluysa, varsayılan değerini kullanmak 1saldırı yüzeyini biraz azaltacaktır. Ancak, siteniz güvenliyse ve yaymazsanız X-XSS-Protection: 0, siteniz bu özelliği destekleyen herhangi bir tarayıcıya karşı savunmasız olacaktır. Sitenizdeki henüz bilinmeyen XSS güvenlik açıklarına karşı tarayıcılardan kapsamlı savunma desteği almak istiyorsanız, katı bir Content-Security-Policybaşlık kullanın . Bu, sitenizi bilinen güvenlik açıklarına açmaz.

Şu anda bu özellik MSIE, Safari ve Google Chrome'da varsayılan olarak etkindir. Bu daha önce Edge'de etkinleştirilmekteydi, ancak Microsoft bu yanlış özelliği zaten Edge'den kaldırmıştı . Mozilla Firefox bunu asla uygulamadı.

Ayrıca bakınız:

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.