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.
Aşağıdaki adımlar tanımanıza ve ASP uygulamaları için CSSI açıktır düzeltmek yardımcı olur:
- ASP kodu için görüntülenecek HTML oluşturan bakın. ASP, HTML iki yolla çıktısına Yazar:
-ve-
- 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")
|
- 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
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:
252985
(http://support.microsoft.com/kb/252985/EN-US/
)
Nasıl yapılır: Web uygulamalar? için siteler arası komut dosyası çalıştırma güvenlik konuları engelle
253121
(http://support.microsoft.com/kb/253121/EN-US/
)
Inceleme MTS/ASP kodu CSSI güvenlik açığı için nasıl
253120
(http://support.microsoft.com/kb/253120/EN-US/
)
Inceleme nasıl Visual ınterdev CSSI güvenlik açığı kod oluşturulmuş
253117
(http://support.microsoft.com/kb/253117/EN-US/
)
Nası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.
Makale numarası: 253119 - Son Gözden Geçirme: 08 Temmuz 2005 Cuma - Gözden geçirme: 1.3
Bu makaledeki bilginin uygulandığı durum:
- Microsoft Active Server Pages
| kbmt kbcodesnippet kbcssi kbhowto kbsecurity kbsecvulnerability KB253119 KbMttr |
Otomatik TercümeÖ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
(http://support.microsoft.com/kb/253119/en-us/
)
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.