Siteler arası komut dosyası çalıştırma güvenlik sorunlarını önleme hakkında

Makale çevirileri Makale çevirileri
Makale numarası: 252985 - Bu makalenin geçerli olduğu ürünleri görün.
Duyuru
Bu makalede, Windows 2000 için geçerlidir. 13 Temmuz 2010 üzerinde Windows 2000 Destek sonlandırıyor.Windows 2000 End-of-Support Solution Center, Windows 2000'den geçiş stratejisini planlama bir başlangıç noktasıdır. Daha fazla bilgi için Microsoft Support Lifecycle Policy "konusuna bakın.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Dinamik olarak oluşturulan HTML sayfalarını, biçimi üzerinde veya dışında şekilde girdileri doğrulandığı, güvenlik risklerine neden olabilir. Kötü amaçlı komut dosyası, Web sayfalarına gönderilir ve tarayıcılara, güvenilir bir kaynaktan gönderilmiş gibi görünen bir giriş içinde katıştırılabilir. Bu sorun, bir siteler arası komut dosyası çalıştırma güvenlik sorunu anılır. Bu makalede, siteler arası komut dosyası çalıştırma güvenlik sorunları, sonuçları ve engelleme anlatılır.

Daha fazla bilgi

Sorunu

Birçok Web sayfası değil doğrulanacağını giriş görüntülemesini temel sorundur. Giriş geçerliliği, kötü amaçlı komut dosyası içinde giriş katıştırılabilir. Sunucu tarafında çalışan bir komut dosyası, daha sonra bu olmayan geçerliliği giriş görüntüler, ancak güvenilen site tarafından oluşturulan gibi komut dosyası tarayıcıda çalışır.

Sonuçları

Dinamik Web sayfalarınızı giriş geçerliliği, aşağıdaki sorunlarla karşılaşabilirsiniz:
  • Veri bütünlüğünü tehlikeye girebilir.
  • Tanımlama bilgilerini ayarlama okuyun ve.
  • Kullanıcı girişi ele geçirilebilir.
  • Istemcinin güvenilir bir kaynaktan bağlamında kötü amaçlı komut dosyaları çalıştırılır.
Hangi Web sayfalarını bu açıktan etkilenebilir mi? Aslında, sorun değil doğrulandı girişte göre dinamik sayfa oluşturma etkiler. Aşağıdaki tür Web sayfaları tipik örnekler:
  • Sonuçları sayfaları geri arama alt yapıları, kullanıcı girişini temel.
  • Kullanıcı hesapları veritabanları, tanımlama bilgileri ve benzeri depolar ve kullanıcı adı istemciye sonradan yazma oturum açma sayfaları.
  • Kredi kartı bilgileri işleyen web formları.

Önleme

Bu bölüm, siteler arası komut dosyası çalıştırma güvenlik saldırıları önleme birkaç yaklaşım sunar. Hangi teknikleri sizin için en iyi çalışacak belirlemek için kendi özel koşullarınıza değerlendirin. Tüm teknikler, giriş ve sizin güvenilir kod aldığınız veri doğrulama olduğunu dikkate almak önemlidir. Aslında, engelleme, girişinizi, yordamlar için sağlamlık denetimi'ni çalıştırarak yararlı kodlama izleyin anlamına gelir.

Aşağıdaki listede, siteler arası komut dosyası saldırıları önlemek için bir genel yaklaşımdan önerilmektedir:
  • Giriş parametreleri temel alınarak çıkış kodlayın.
  • Giriş parametreleri için özel karakterler</a1> filtre uygulayın.
  • Giriş parametreleri için özel karakterler göre süzgeç çıkış.
Filtre uygulama veya kodlar, filtrenizin için uygun özel karakterleri denetliyor emin olmak Web sayfalarınız için bir karakter belirtmeniz gerekir. Web sayfalarınıza eklenen veriler üzerinde belirli bir karakter kümesini temel alan özel kabul edilen byte serilerini filtre. Popüler bir karakter kümesi, HTML ve HTTP önceki sürümlerinde varsayılan olduğu ISO 8859-1 olur. Bu parametreler değiştirdiğinizde hesap Yerelleştirme sorunları almanız gerekir.

Giriş parametreleri için özel karakterlerin bağlı çıktı kodla

Size, HTML olarak yazdığınızda giriş olarak alınan veriler kodlayın. Bu teknik, herhangi bir nedenle doğrulanmadı, Giriş sırasında veriler üzerinde etkilidir. URLEncodeHTMLEncode gibi teknikleri kullanarak, kötü amaçlı kod yürütülmesini engelleyebilirsiniz.

Aşağıdaki kod parçacıkları URLEncode ve HTMLEncode Active Server Pages (ASP) sayfalarından nasıl kullanılacağı gösterilmektedir:
<%
      var BaseURL = http://www.mysite.com/search2.asp?searchagain=;
      Response.write("<a href=\"" + BaseUrl +
      Server.URLEncode(Request.QueryString("SearchString")) +
      "\">click-me</a>");
%>
<% Response.Write("Hello visitor <I>" +
      Server.HTMLEncode(Request.Form("UserName")) +
      "</I>");
%>
				
, URL'ler ve HTML kodlama, verileri süzmek için olsaydı, gibi kod sayfasını belirtmeniz gerekebilir.

Bu dize üzerinde HTMLEncode arama hakkında gelen yürütülmekte olan komut dosyaları da görüntülenmesini engeller olduğunu unutmayın ve bu nedenle, sorunu engeller.

Giriş parametreleri özel karakterler için süzme

Süzme giriş girişinizi bazı veya tüm özel karakterler kaldırarak çalışır. Karakterler, komut dosyası içinde bir HTML akışına oluşturulmasına olanak veren özel karakterlerdir. Özel karakterler şunlardır:
< > " ' % ; ) ( & + -
				
Not tek tek durumunuza ek karakterler veya özel karakterler dışında dizeleri süzme erişmediğini.

Süzme etkili bir yöntem ise, birkaç uyarılar vardır:
  • Süzme bazı giriş için uygun olmayabilir. Örneğin, bir HTML formundan <text>Giriş görüntüleniyor senaryolarda kodlama (aşağıya bakın) gibi bir yöntem yerine seçebilirsiniz.
  • Süzülmüş bazı karakterler, gerçekte sunucu tarafında çalışan komut dosyası için gerekli bir girdi olabilir.
JavaScript'i yazılır, aşağıdaki örnek süzgeç, özel karakterleri kaldırmak gösterilmiştir:
function RemoveBad(strTemp) { 
    strTemp = strTemp.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,""); 
    return strTemp;
} 
				
aşağıdaki kod, daha sonra kullanmak üzere depolamadan önce kullanıcı girişini işleme.
<% Session("StoredPreference") = RemoveBad(Request.Cookies("UserColor"));
         var TempStr = RemoveBad(Request.QueryString("UserName"));				

Giriş parametreleri için özel karakterler göre süzgeç çıkış

Bu teknik, istemciye yazılan karakterler süzgeç dışında giriş süzme benzer. Bu etkin bir yöntem ise, bu sorun dışında HTML öğelerini yazmak, Web sayfaları için var.

Özel karakterleri kaldıran bir genel işlevi <TABLE>öğeler dışında yazan bir sayfada, kald?rmak < ve > <TABLE>etiketi ruins karakter. Bu nedenle, bu yöntem yararlı için sırada, yalnızca geçirilen bir veri ya da daha önce bir kullanıcının girdiği ve veritabanında depolanan verileri filtre.

Olası kötü amaçlı bir veri kaynakları

Sorun dinamik olarak HTML oluşturmak için giriş kullanan herhangi bir sayfa için geçerlidir, ancak olası güvenlik riskleri için nokta onay yardımcı olmak için kötü amaçlı bir veri olası bazı kaynakları şunlardır:
  • Sorgu dizesi
  • Cookies
  • Deftere nakledilen veri
  • URL ve PATH_INFO gibi URL'lerin parça
  • Bir veritabanı gibi bazı biçimde kalıcıdır ve kullanıcılardan alınan verileri

Sonuç

Conclusion, siteler arası komut dosyası çalıştırma güvenlik sorununa anımsanması anahtar noktaları şunlardır:
  • Sorun değil doğrulandı girişte göre dinamik sayfa oluşturma etkiler.
  • Giriş verileri bir sağlamlık denetimi atlandığını olabilir beklenmeyen güvenlik üzerinde etkileri. Giriş doğrulaması gibi iyi geliştirme standartlar aracılığıyla preventable sorunu var.
  • Üzerinde çözümleri değerlendirmek gereksinim duyduğunuz bir site başına sayfa, alan için ayrı ayrı bile ve anlamlı bir teknik kullanır.

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
Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
253117Engelleme ınternet Explorer ve Outlook Express'i komut dosyası çalıştırma güvenlik sorunları siteler arası
253119ASP kodu CSSI güvenlik açã½ã ° ã½ için gözden geçir nasıl
253120Visual ınterdev gözden geçirmek nasıl generated CSSI güvenlik açã½ã ° ã½ için
253121Nasıl yapılır: MTS/ASP kodu CSSI güvenlik açã½ã ° ã½ için gözden geçirin.

Özellikler

Makale numarası: 252985 - Last Review: 1 Mart 2006 Çarşamba - Gözden geçirme: 3.6
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Active Server Pages 2.0
  • Microsoft Active Server Pages 3.0
  • Microsoft Windows 2000 Server
Anahtar Kelimeler: 
kbmt kbcodesnippet kbcssi kbhowto kbsecurity KB252985 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:252985

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