Jak zkontrolovat kód ASP týkající CSSI

Překlady článku Překlady článku
ID článku: 253119 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Souhrn

Tento článek popisuje, jak identifikovat a správné aplikace Active Server Pages (ASP), které jsou náchylné k přesměrováním skriptování zabezpečení problémy (CSSI). Pouze vstup, který je ověřen není správně nebo formátovaný zranitelným aplikace k útoku.

Další informace

Následující kroky vám pomohou identifikovat a opravit aplikací ASP jsou náchylné CSSI:
  1. Vyhledejte kód ASP generuje HTML být zobrazeny. ASP zapíše HTML výstup dvěma způsoby:
    Response.Write
    					
    - a -
    <% =
    					
  2. Určit, zda výstup zahrnuje vstupní parametry. Tyto parametry mohou pocházet z různých zdrojů. Následující seznam obsahuje běžné vstupní zdroje:

    Zmenšit tuto tabulkuRozšířit tuto tabulku
    Vstupní zdrojUkázkové metoda Access kód ASP
    Kolekce Request.Form
    Response.Write Request.Form("username")
    									
    Kolekce výrazu Request.QueryString
    <%=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>
    									
    Objekt požadavku
    Response.Write("username")
    									
    Databází / Access metody dat
    Do While Not rst.EOF
    	Response.Write rst("myfield") & "<br>"
    	rst.MoveNext
    Loop
    									
    Kolekce souborů cookie
    Response.Write Request.Cookie("username")
    									
    Relace a aplikace proměnné
    Response.Write Session("username")
    									
  3. Najít kód ASP generuje HTML pomocí některé vstupní musíte vyhodnotit řešení pro konkrétní aplikace. Řešení níže prezentovat některé obecné koncepty pomohou začít prevence CSSI.

    Poznámka: Při filtrování nebo kódování, je třeba zadat znak nastavit pro webové stránky zajistit kontroluje váš filtr pro příslušný speciální znaky. Data vložena do webových stránek byste odfiltrovat bajt sekvence, které jsou považovány za zvláštní založené na určitou znakovou sadu (charset). Populární charset je ISO 8859-1, což je výchozí v dřívějších verzích HTML a HTTP. Při změně těchto parametrů je nutné provést do účtu lokalizace problémy.
    • Pomocí metody HTMLEncode kódovat vstupních parametrů při generování zobrazení.

      Většina CSSI útoky mohou být obecně zabránila jednoduše pomocí HTMLEncode na vstupní parametry. Pomocí HTMLEncode funguje nahrazením znaků, které mají zvláštní význam proměnné HTML: HTML, které představují tyto znaky (například & = & "="). Zadejte pouze data musí být kódovány Poznámka a nikoli celé řetězce.
      <% Response.Write("Hello visitor <I>" +
            Server.HTMLEncode(Request.Form("UserName")) +
            "</I>");
      %> 
      						
    • HTTP_REFERER lze omezit domény, ze kterého lze odeslat požadavky.

      HTTP_REFERER vrátí řetězec obsahující URL původního požadavku při došlo k přesměrování. Webové servery mohou zkontrolujte pole odkazujícího serveru při přijetí formuláře vyplněnými a jej odmítnout, pokud nejsou přepnuty v pravém místě. Zkontrolujte HTTP_REFERER následujícím způsobem:
         <%
         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
         %> 
      							
      Poznámka: pole odkazujícího serveru má některá omezení:
      • Riskujete blokování legitimní formuláře odeslání.
      • Propojení může pocházet z e-mailu nebo nemá URL záložku.
      • Prohlížeče může záměrně například vymazat pole odkazujícího serveru během požadavku HTTPS.
    • URLEncode použít ke kódování URL přijatých jako vstupní parametry.

      Metoda URLEncode platí, včetně řídicích znaků do zadaného řetězce pravidla kódování adres URL. Příchozí adresy URL by měla kódovat před jejich zobrazení. Zde je příklad URLEncode:
      <%
            var BaseURL = http://www.mysite.com/search2.asp?searchagain=;
            Response.write("<a href=\"" + BaseUrl +
            Server.URLEncode(Request.QueryString("SearchString")) +
            "\">click-me</a>");
      %>
      						
    • Odstranit nebo upravit speciální znaky ze vstupních parametrů. Speciální znaky patří následující:
      < > " ' % ; ) ( & +
      							
      můžete odstranit nebo změnit znaky při čtení je v nebo při zobrazení je do prohlížeče v závislosti na aplikaci.

      Tento příklad používá k filtrování speciální znaky JavaScript:
      function RemoveBad(strTemp) { 
      	strTemp = strTemp.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,""); 
      return strTemp;
      } 
      							
      tento ukázkový Visual Basic Scripting Edition, verze 5.0 regulární výrazy používá k filtrování speciální znaky:
      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
      						

Odkazy

Další informace naleznete v následujících zpravodaj z počítač Emergency Response Team (CERT) na univerzity Carnegie Mellon:
http://www.cert.org/advisories/CA-2000-02.html
Další informace naleznete v následujících článcích znalostní báze Microsoft Knowledge Base:
252985Jak zabránit problémy přesměrováním skriptování zabezpečení pro webové aplikace
253121Jak zkontrolovat kód MTS/ASP týkající CSSI
253120Jak zkontrolovat Visual InterDev generovaný kód týkající CSSI
253117Jak zabránit CSSI zabezpečení aplikace Internet Explorer a Outlook Express
Společnost Microsoft se vám snaží usnadnit získání technické podpory poskytnutím informací o kontaktech na jiné výrobce. Kontaktní informace se mohou změnit bez předchozího upozornění. Společnost Microsoft neručí za správnost těchto informací o kontaktech.

Vlastnosti

ID článku: 253119 - Poslední aktualizace: 8. července 2005 - Revize: 1.3
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Active Server Pages 4.0
Klíčová slova: 
kbmt kbcodesnippet kbcssi kbhowto kbsecurity kbsecvulnerability KB253119 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:253119
Právní omezení pro obsah znalostní báze týkající se produktů, jejichž podpora byla ukončena
Tento článek byl napsán o produktech, pro které společnost Microsoft již neposkytuje nadále podporu. Článek je tedy nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.

Dejte nám zpětnou vazbu

 

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