Você receber uma mensagem de erro quando você implanta um aplicativo ASP.NET 1.0 em um servidor com ASP.NET 1.1

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: 821343
Sintomas
Quando você implanta um aplicativo da Web do Microsoft ASP.NET 1.0 em um servidor com o Microsoft .NET Framework versão 1.1 instalado, você recebe a seguinte mensagem de erro se a entrada unencoded é enviada:
Foi detectado um valor Request.Form potencialmente perigoso do cliente
Causa
Quando o .NET Framework 1.1 é instalado em um computador, o valor padrão do atributo validateRequest é true . Quando o valor de validateRequest é definido como true , validação de solicitação é executada e uma exceção é lançada se a entrada tem valores potencialmente perigosos.

O novo recurso validação de solicitação no ASP.NET 1.1 proativamente impede ataques dos valores perigosos. Ele não permite que o servidor processar conteúdo HTML unencoded, a menos que você decida permitir que o conteúdo. O recurso de validação de solicitação foi projetado para ajudar a evitar alguns ataques de injeção de script onde HTML ou código de script de cliente pode ser inadvertidamente enviado a um servidor, pode ser armazenado e, em seguida, pode ser apresentado para outros usuários.
Resolução
O recurso de validação de solicitação do ASP.NET 1.1 impede que o servidor aceitar conteúdo que contém HTML unencoded. Você pode desativar solicitação validação definindo validateRequest atributo como false na página @ ou diretiva na seção de configuração.

Desabilitar validação de solicitação em uma página

Para desativar a validação de solicitação em uma página, você deve definir o atributo validateRequest de página @ diretiva como false :
<%@ Page validateRequest="false"  %>
Observação ao validação de solicitação for desativada, conteúdo é enviado para uma página. O desenvolvedor da página deve verificar se o conteúdo está codificado corretamente ou é processado corretamente.

Desativar a validação de solicitação para seu aplicativo

Para desativar validação de solicitação para o seu aplicativo, você deve modificar ou criar um arquivo Web.config para seu aplicativo e, em seguida, defina o atributo validateRequest do < PÁGINAS / > seção para False :
 <configuration>   <system.web>     <pages validateRequest="false" />   </system.web> </configuration> 
se você desejar desativar validação de solicitação para todos os aplicativos no servidor, você pode fazer essa alteração do arquivo Machine.config.

Observação Quando a validação de solicitação está desativada, conteúdo é enviado ao seu aplicativo. O desenvolvedor do aplicativo deve Certifique-se que o conteúdo está codificado corretamente ou é processado corretamente.

O conteúdo de codificação de HTML

Quando a solicitação de validação é desativada, você deve HTML codificar o conteúdo para impedir possíveis ataques por unencoded conteúdo em HTML.

Se você desativou a validação de solicitação, é recomendável prática para HTML codificar conteúdo que será armazenado para uso futuro. Codificação HTML substitui automaticamente qualquer "<"ou ">" representação codificada em caracteres (e vários outros símbolos) com seu HTML correspondente.

Você pode facilmente HTML codificar conteúdo no servidor usando o método Server.HtmlEncode (String) . Você pode também facilmente HTML decodificar o conteúdo. A decodificação de HTML reverte back conteúdo HTML-codificados para HTML padrão. Para fazer isso, use o método Server.HtmlDecode (String) .

Use o seguinte código:

Microsoft Visual Basic. Código de NET

<%@ Page Language="vb" validateRequet="false" %><HTML>   <HEAD>      <title>WebForm2</title>      <script runat="server">            Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)            ' Set the label to the HTMLEnoded value of  TextBox.         Label1.Text = Server.HtmlEncode(TextBox1.Text)      End Sub      </script>   </HEAD>   <body>      <form id="Form1" method="post" runat="server">         <asp:Button id="Button1" OnClick="Button1_Click"                style="Z-INDEX: 101; LEFT: 299px; POSITION: absolute; TOP: 172px" runat="server" Text="Button">         </asp:Button>         <asp:Label id="Label1"                style="Z-INDEX: 102; LEFT: 403px; POSITION: absolute; TOP: 171px" runat="server">Label         </asp:Label>         <asp:TextBox id="TextBox1"               style="Z-INDEX: 103; LEFT: 248px; POSITION: absolute; TOP: 122px" runat="server">         </asp:TextBox>      </form>   </body></HTML>

Código de translation from VPE for Csharp .NET do Microsoft Visual

<%@ Page Language="c#" validateRequet="false" %><HTML>   <HEAD>      <title>WebForm2</title>      <script runat="server">            private void Button1_Click(object sender, System.EventArgs e)      {         // Set the label to the HTMLEnoded value of  TextBox.           Label1.Text = Server.HtmlEncode(TextBox1.Text);      }      </script>   </HEAD>   <body>      <form id="Form1" method="post" runat="server">         <asp:Button id="Button1" OnClick="Button1_Click"               style="Z-INDEX: 101; LEFT: 299px; POSITION: absolute; TOP: 172px" runat="server" Text="Button">         </asp:Button>         <asp:Label id="Label1"                style="Z-INDEX: 102; LEFT: 403px; POSITION: absolute; TOP: 171px" runat="server">Label         </asp:Label>         <asp:TextBox id="TextBox1"                style="Z-INDEX: 103; LEFT: 248px; POSITION: absolute; TOP: 122px" runat="server">         </asp:TextBox>      </form>   </body></HTML>
Situação
Esse comportamento é por design.
Mais Informações

Passos para reproduzir o problema

  1. Inicie o Microsoft Visual Studio NET..
  2. Criar um novo aplicativo Web do ASP.NET 1.0 usando translation from VPE for Csharp Visual .NET ou Visual Basic. NET. Por padrão, WebForm1.aspx é criado.
  3. Adicione um controle Button , um controle TextBox e um controle Label a WebForm1.aspx.
  4. Clique com o botão direito do mouse em WebForm1.aspx e clique em Exibir código fonte HTML .
  5. Substitua o código existente com o código a seguir:

    código do Visual Basic .NET
    <%@ Page Language="vb" %><HTML>   <HEAD>      <title>WebForm2</title>      <script runat="server">            Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)             Label1.Text = TextBox1.Text      End Sub      </script>   </HEAD>   <body>      <form id="Form1" method="post" runat="server">         <asp:Button id="Button1" OnClick="Button1_Click"                 style="Z-INDEX: 101; LEFT: 299px; POSITION: absolute; TOP: 172px" runat="server" Text="Button">         </asp:Button>         <asp:Label id="Label1"                 style="Z-INDEX: 102; LEFT: 403px; POSITION: absolute; TOP: 171px" runat="server">Label         </asp:Label>         <asp:TextBox id="TextBox1"                 style="Z-INDEX: 103; LEFT: 248px; POSITION: absolute; TOP: 122px" runat="server">         </asp:TextBox>      </form>   </body></HTML>
    Código do .NET translation from VPE for Csharp visual
    <%@ Page Language="c#" %><HTML>   <HEAD>      <title>WebForm2</title>      <script runat="server">            private void Button1_Click(object sender, System.EventArgs e)      {           Label1.Text = TextBox1.Text;      }      </script>   </HEAD>   <body>      <form id="Form1" method="post" runat="server">         <asp:Button id="Button1" OnClick="Button1_Click"                 style="Z-INDEX: 101; LEFT: 299px; POSITION: absolute; TOP: 172px" runat="server" Text="Button">         </asp:Button>         <asp:Label id="Label1"                 style="Z-INDEX: 102; LEFT: 403px; POSITION: absolute; TOP: 171px" runat="server">Label         </asp:Label>         <asp:TextBox id="TextBox1"                 style="Z-INDEX: 103; LEFT: 248px; POSITION: absolute; TOP: 122px" runat="server">         </asp:TextBox>      </form>   </body></HTML>
  6. No menu Debug , clique em Iniciar para executar o aplicativo.
  7. Digite o seguinte texto na caixa de texto:
    <script> alerta ("teste de script entre sites!") </script>
  8. Clique no botão e observe que o script tem permissão para ser lançado novamente sem HTML codificado. A caixa de mensagem será exibida.
  9. Implantar o mesmo código em um servidor com o .NET Framework versão 1.1 instalado. Você receber a mensagem de erro mencionada na seção "Sintomas" deste artigo.
Referências
Para obter mais informações, visite os seguintes sites:
Solicitar validação - impedindo ataques de script
http://www.asp.net/learn/whitepapers/request-validation/

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 821343 - Última Revisão: 05/18/2007 08:37:19 - Revisão: 2.5

Microsoft ASP.NET 1.1

  • kbmt kbwebforms kbconfig kbscript kbdeployment kbprb KB821343 KbMtpt
Comentários