ASP incorrectamente descodifica o QUERY_STRING e pode revelar as informações de caminho da Metabase

Traduções de Artigos Traduções de Artigos
Artigo: 261116 - Ver produtos para os quais este artigo se aplica.
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Expandir tudo | Reduzir tudo

Sintomas

Utilizar a colecção Response.QueryString obter valores a partir do fim de um URL, mas não receberá os valores esperados. Os valores devolvidos em vez disso, poderão conter informações de metabase dos serviços de informação Internet (IIS).

Causa

O objecto pedido intrínseco do ASP (Active Server Pages) contém informações que enviados do cliente para o servidor num pedido de HTTP. A coleção QueryString contém qualquer pares nome/valor que aparecem no final do URL. Por exemplo:
http://server/virtualDirectory/page.asp?name=value
				
esta informação será codificados em URL.


Por exemplo
http://server/virtualDirectory/page.asp?name=my_value
				
seria exibido como:
http://server/virtualDirectory/page.asp?name=my%5Fvalue
				
no entanto, se o valor contiver um sinal de percentagem e um valor hexadecimal que não corresponde a um carácter válido ("% 5F" mapeia para um carácter de sublinhado [_]), o valor devolvido da colecção vai ser o caminho do Web site sob a forma de um caminho da metabase. Isto pode ser um problema quando a variável é impresso directamente em HTML através de Response.Write.

Por exemplo
Response.Write Request.QueryString("name")
				
iria imprimir:
LM/W3SVC/1/Root/VirtualDirectoryName
					

Resolução

Para resolver este problema, obtenha o service pack mais recente do Windows 2000. Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
260910Como obter o Service Pack mais recente do Windows 2000
Para resolver este problema, pode utilizar a função Server.URLEncode para codificar QueryString valores antes de adicionar o QueryString.

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

Se imprimir o valor de nome utilizando
Response.Write Request.Querystring("name")
				
no Page.asp, o resultado seria "Meu nome que contém um sinal %" como previsto.

Ponto Da Situação

A Microsoft confirmou que este é um problema no Microsoft Windows 2000.

Este problema foi corrigido pela primeira vez no Windows 2000 Service Pack 1.

Propriedades

Artigo: 261116 - Última revisão: 4 de fevereiro de 2014 - Revisão: 3.3
A informação contida neste artigo aplica-se a:
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
Palavras-chave: 
kbnosurvey kbarchive kbmt kbbug kbfix kbwin2000sp1fix KB261116 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 261116

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