Şu anda çevrimdışısınız; İnternet'in yeniden bağlanması bekleniyor

Inceleme ASP kodu CSSI güvenlik açığı için nasıl

ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.

Makalenin İngilizcesi aşağıdaki gibidir:253119
Kullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.
Özet
Bu makalede, nasıl belirleneceği ve siteler arası komut dosyası çalıştırma güvenlik sorunları (CSSI için) açıktır, doğru Active Server Pages (ASP) uygulamalarını açıklar. Doğru geçerliliği biçimlendirilmiş veya yalnızca bir giriş uygulamanız gerçekleştirilen saldırılara karşı savunmasız hale getirir.
Daha fazla bilgi
Aşağıdaki adımlar tanımanıza ve ASP uygulamaları için CSSI açıktır düzeltmek yardımcı olur:
  1. ASP kodu için görüntülenecek HTML oluşturan bakın. ASP, HTML iki yolla çıktısına Yazar:
    Response.Write					
    -ve-
    <% =					
  2. HTML çıkışı'giriş parametresi içerip içermeyeceğini belirler. Bu parametreler, çeşitli kaynaklardan gelebilir. Aşağıdaki liste, ortak giriş kaynağı içerir:

    Giriş kaynağıASP kodu erişim yöntemi örneği
    Request.Form koleksiyonu
    Response.Write Request.Form("username")									
    Request.QueryString derlemesi
    <%=Request.QueryString("username")%>									
    Response.Write Request.QueryString("username")									
    <a href="http://mysite/showuser.asp?username=<% = Request.QueryString("username") %>">mypage</a>									
    <a href="http://mysite/mypage.asp"><%=Request.QueryString("url")%></a>									
    Nesne iste
    Response.Write("username")									
    Veritabanlarının / veri erişim yöntemleri
    Do While Not rst.EOF	Response.Write rst("myfield") & "<br>"	rst.MoveNextLoop									
    Tanımlama bilgileri koleksiyonu
    Response.Write Request.Cookie("username")									
    Oturum ve uygulama değişkenleri
    Response.Write Session("username")									
  3. Bazı girdi kullanarak HTML oluşturan ASP kodu bulduğunuzda, özel uygulamanız için çözümleri değerlendir gerekir. Aşağıdaki çözümler CSSI önleme başlamak amacıyla bazı genel kavramları sunar.

    Süzme veya kodlama, filtrenizin için uygun özel karakterleri denetliyor emin olmak Web sayfalarınız için bir karakter belirtmek gerektiğini unutmayın. Web sayfalarınıza eklenen verilerin belirli bir karakter kümesinde (karakter kümesi) temel alan özel kabul edilen byte serilerini filtre. Popüler bir karakter kümesi ISO 8859-1; HTML ve HTTP önceki sürümlerinde varsayılan ise negatiftir. Bu parametreler değiştirdiğinizde hesap Yerelleştirme sorunları almanız gerekir.
    • HTMLEncode yöntemi, görüntü oluştururken giriş parametrelerini kodlamak için kullanın.

      Genel olarak, çoğu CSSI saldırıların HTMLEncode yalnızca girdi parametreleri kullanarak engellenebilir. HTMLEncode çalışır; bu karakterleri göstermek için HTML HTML değişkenleri içinde özel anlamları karakterleri değiştirerek kullanarak (örneğin & = &, "="). Yalnızca verileri kodlanmış gereken Not ve tam dizelerin Lütfen.
      <% Response.Write("Hello visitor <I>" +      Server.HTMLEncode(Request.Form("UserName")) +      "</I>");%> 						
    • HTTP_REFERER istekleri gönderilebilir etki alanı sınırlamak için kullanılır.

      HTTP_REFERER yeniden yönlendirmenin oluştuğunda, özgün istek URL'SI içeren bir dize döndürür. Web sunucuları, doldurulan bir form alırsınız ve doğru yerden gelen, reddetmek başvuran alanı denetleyebilirsiniz. Aşağıdaki şekilde HTTP_REFERER denetleyebilirsiniz:
         <%   If (Request.ServerVariables("HTTP_REFERER") = "") Or _      (Left(Request.ServerVariables("HTTP_REFERER"),42) <> _      "http://www.myserver.com/AppDir/mainfrm.asp") Then      Response.Redirect "http://www.myserver.com/AppDir/mainfrm.asp"   End If   %> 							
      Not: başvuran alanı bazı sınırlamalar vardır:
      • Meşru bir form teslimlerin engelleme ortaya çıkma riskini.
      • Bağlantı, bir e-posta veya bir URL bulunmayan bir yer işareti gelir.
      • Tarayıcıları kasten başvuran alanı gibi bir HTTPS isteği sırasında temizleyin.
    • URLEncode giriş parametresi alınan URL'leri kodlamak için kullanın.

      URLEncode yöntemi, URL, belirtilen bir dize için Çıkış karakterlerini de dahil olmak üzere, kuralları kodlama uygulanır. Gelen URL kodlamak için bunları görüntülemeden önce. Işte bir örnek için URLEncode:
      <%      var BaseURL = http://www.mysite.com/search2.asp?searchagain=;      Response.write("<a href=\"" + BaseUrl +      Server.URLEncode(Request.QueryString("SearchString")) +      "\">click-me</a>");%>						
    • Kaldýrmak veya özel karakterler giriş parametrelerini değiştirin. Özel karakterler şunlardır:
      < > " ' % ; ) ( & +							
      , kaldýrmak veya bunları veya bunları tarayıcıya uygulamanıza bağlı olarak görüntülediğinizde okuduğunuzda, karakter değiştirebilirsiniz.

      Bu örnek, özel karakterler süzmek için JavaScript kullanır:
      function RemoveBad(strTemp) { 	strTemp = strTemp.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,""); return strTemp;} 							
      bu örnekte, özel karakterler süzmek için Visual Basic Scripting Edition Sürüm 5.0 normal ifadeler kullanır:
      Function ValidateTags(QueryString)	Dim o	Set o = CreateObject("VBScript.RegExp") ' -> VB Script 5.0	Dim sBad	sBad = "(<\s*(script|object|applet|embed|form)\s*>)"   ' <  script xxx >	sbad = sbad & "|" & "(<.*>)"             ' >xxxxx<  warning includes hyperlinks and stuff between > and <	sbad = sbad & "|" & "(&.{1,5};)"   ' &xxxx;	sbad = sbad & "|" & "eval\s*\("    ' eval  (  	sbad = sbad & "|" & "(event\s*=)"  ' event  =		'Now lets check for encoding	sbad = Replace(sbad,"<", "(<|%60|<)")	sbad = Replace(sbad,">", "(>|%62|>)")		o.IgnoreCase = True 'ignore case of string	o.Global =False 'stop on first hit	o.Pattern = sBad	ValidateTags = o.Test(QueryString)	Set o = NothingEnd Function						
Referanslar
Daha fazla bilgi için aşağıdaki gelen Computer Acil Durum yanıt ekibi (CERT) Carnegie Mellon University'deki danışma belgesine bakın: Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
252985Nasıl yapılır: Web uygulamalarý için siteler arası komut dosyası çalıştırma güvenlik konuları engelle
253121Inceleme MTS/ASP kodu CSSI güvenlik açığı için nasıl
253120Inceleme nasıl Visual ınterdev CSSI güvenlik açığı kod oluşturulmuş
253117Nasıl yapılır: ınternet Explorer ve Outlook Express CSSI Güvenlik Açığı'nı engelle
Microsoft, teknik destek bulmanıza yardımcı olmak üzere üçüncü taraf iletişim bilgilerini sağlamaktadır. Bu bilgiler haber verilmeden değişebilir. Microsoft bu üçüncü taraf iletişim bilgilerinin doğruluğunu garanti etmez.

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 253119 - Son İnceleme: 07/08/2005 23:40:15 - Düzeltme: 1.3

Microsoft Active Server Pages

  • kbmt kbcodesnippet kbcssi kbhowto kbsecurity kbsecvulnerability KB253119 KbMttr
Geri bildirim