Server ASP chybně dešifruje řetězec QUERY_STRING a může odhalit informace o cestě metabáze (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)

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:261116
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Příznaky
Použít kolekci Response.QueryString načíst hodnoty z konec adresy URL, ale obdržíte očekávané hodnoty. Hodnoty vrácené namísto pravděpodobně informace metabáze Internetová informační služba (IIS).
Příčina
Vnitřní objekt Request Active Server Pages (ASP) obsahuje informace odesílaná z klienta na server v požadavku HTTP. Kolekce QueryString obsahuje libovolné dvojicích název/hodnota se zobrazí na konci adresu. Například:
http://server/virtualDirectory/page.asp?name=value				
tyto informace budou zakódovány URL.


Například
http://server/virtualDirectory/page.asp?name=my_value				
se zobrazí jako:
http://server/virtualDirectory/page.asp?name=my%5Fvalue				
však cesty webu ve formuláři cestu metabáze být Pokud hodnota obsahuje znak procent a není mapovat platný znak ("% 5F" mapuje podtržení [_]), vrácená hodnota kolekce hexadecimální hodnotu. To může být problém při tisku přímo do HTML prostřednictvím Response.Write proměnné.

Například
Response.Write Request.QueryString("name")				
by vytisknout:
LM/W3SVC/1/Root/VirtualDirectoryName					
Řešení
Tento problém vyřešíte pomocí nejnovější aktualizace service pack pro systém Windows 2000. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
260910Jak získat nejnovější aktualizaci Service Pack pro systém Windows 2000
Chcete-li tento problém vyřešit, můžete funkci Server.URLEncode kódovat QueryString hodnoty před přidáním do QueryString.

Například:
Response.Redirect "http://server/virtualDirectory/page.asp?name=" & Server.URLEncode("My Name ThatContains A % Sign")				

Pokud vytisknete název hodnoty pomocí
Response.Write Request.Querystring("name")				
Page.asp, výsledkem by být na "Tento název se obsahuje % znak" podle očekávání.
Prohlášení
Společnost Microsoft potvrzuje, že se jedná o problém v systému Windows 2000.

Tento problém byl poprvé opraven v systému Windows 2000 Service Pack 1.

Vlastnosti

ID článku: 261116 - Poslední kontrola: 02/02/2014 05:10:49 - Revize: 3.3

Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server, Microsoft Windows 2000 Professional Edition

  • kbnosurvey kbarchive kbmt kbbug kbfix kbwin2000sp1fix KB261116 KbMtcs
Váš názor