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

Makale çevirileri Makale çevirileri
Makale numarası: 253119 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Ö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:

    Bu tabloyu kapaBu tabloyu aç
    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.MoveNext
    Loop
    									
    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 = Nothing
      End 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:
http://www.cert.org/advisories/CA-2000-02.html
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.

Özellikler

Makale numarası: 253119 - Last Review: 8 Temmuz 2005 Cuma - Gözden geçirme: 1.3
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Active Server Pages
Anahtar Kelimeler: 
kbmt kbcodesnippet kbcssi kbhowto kbsecurity kbsecvulnerability KB253119 KbMttr
Machine-translated Article
Ö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.

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com