ASP incorretamente decodifica o QUERY_STRING e pode revelar as informações de caminho da Metabase

Traduções deste artigo Traduções deste artigo
ID do artigo: 261116 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Expandir tudo | Recolher tudo

Sintomas

Você usar a coleção Response.QueryString para recuperar valores do final de uma URL, mas você não receber os valores esperados. Os valores retornados em vez disso, podem ser informações de metabase do IIS (Serviços de informações da Internet).

Causa

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


Por exemplo
http://server/virtualDirectory/page.asp?name=my_value
				
seriam exibidos como:
http://server/virtualDirectory/page.asp?name=my%5Fvalue
				
Contudo, se o valor contiver um sinal de porcentagem e um valor hexadecimal não mapeia para um caractere válido ("% 5F" mapeia para um sublinhado [_]), o valor de retorno da coleção será o caminho do site da Web na forma de um caminho de metabase. Isso pode ser um problema quando a variável é impresso diretamente em HTML por meio de Response.Write.

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

Resolução

Para resolver esse problema, obtenha o service pack mais recente para o Windows 2000. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
260910Como obter o Service Pack mais recente do Windows 2000
Para resolver esse problema, você pode usar a função Server.URLEncode para codificar QueryString valores antes de adicioná-los ao QueryString.

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

Se você imprimir o valor de nome usando
Response.Write Request.Querystring("name")
				
em Page.asp, o resultado seria "Meu nome que contém A entrada %" conforme o esperado.

Situação

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

Esse problema foi corrigido primeiro no Windows 2000 Service Pack 1.

Propriedades

ID do artigo: 261116 - Última revisão: domingo, 20 de outubro de 2013 - 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes 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