Partilhar via


Visão Geral de Scripts Maliciosos

Da perspectiva de um navegador, uma página da Web é simplesmente uma sequência longa de caracteres.O navegador processa a string sequencialmente, exibe alguns caracteres ao interpretar outros caracteres, tais como <b> e <script> de acordo com regras especiais.Se um usuário mal-intencionado puder inserir alguns desses caracteres especiais em uma página, o navegador não saberá quais caracteres não deveriam estar lá, e ele os processa como parte da página.

Um script malicioso simplista pode funcionar conforme o seguinte.Se um aplicativo permite aos usuários enviar comentários sobre os filmes mais recentes para outros que usuários possam ler, as etapas de vulnerabilidade podem ser:

  1. O aplicativo exibe um formulário onde os usuários inserem comentários.O usuário mal-intencionado grava um comentário que inclui um bloco <script> dentro dele.

  2. O formulário é remetido e o comentário do usuário mal-intencionado é armazenado em um banco de dados.

  3. Outro usuário visita o site.Quando a página é construída, ele lê comentários fora do banco de dados e os coloca na página.O bloco <script> do usuário mal-intencionado é gravado para a página como se ele fosse um comentário de texto.

  4. Quando o segundo navegador do usuário mostra a página, isso leva ao bloco script> e o executa.

Existem outras maneiras que usuários mal-intencionados podem fazer scripts maliciosos.A maioria dos scripts maliciosos requerem o aplicativo para aceitar a entrada de mal-intencionados e inseri-lo (imitando-o) em uma página onde ele será executado pelo navegador.O dano potencial de tal exploração depende do script que é executado.Ele pode ser trivial, tal como uma mensagem importuna que surge no navegador.Mas ele também pode fazer danos sérios por roubar cookies, roubar a entrada do usuário (como uma senha), e, se a segurança da Internet for frágil, executar o código nativo no computador do usuário.

Para obter informações sobre como evitar explorações de script, consulte Como: Proteger contra exploits script em um aplicativo Web da Web, Applying HTML Encoding to Strings.

Observação:

ASP.NET ajuda a proteger contra scripts maliciosos disfarçados sistema autônomo URLs, Verificando cadeias de caracteres potencialmente perigosas, sistema autônomo "<!","< /", e "<?".

Declarações Maliciosas do SQL

Uma variação de um script malicioso é aquele que causa a execução de instruções SQL mal-intencionadas.Isso pode ocorrer se um aplicativo solicitar usuários para obter informações e depois concatena a entrada do usuário em uma sequência que representa a instrução SQL.Por exemplo, um aplicativo pode solicitar por um nome de clientes com intenção de executar uma declaração, como a seguinte:

"Select * From Customers where CustomerName = " & txtCustomerName.Value

Mas um usuário mal-intencionado que sabe algo sobre o banco de dados pode usar a caixa de texto para inserir uma instrução SQL incorporada com o nome do cliente, resultando em uma declaração como a seguinte:

Select * From Customers Where CustomerName = 'a' Delete From Customers Where CustomerName > ''

Quando a consulta é executada, o banco de dados está comprometido.

Segurança Contra Scripts Maliciosos

A principal defesa contra scripts maliciosos é nunca confiar em informações provenientes de um usuário.Suponha que quaisquer dados postados para seu aplicativo em um navegador possa conter um script mal-intencionado.

Da mesma forma, qualquer momento que você escrever uma sequência em uma página, você deve assumir que a sequência pode conter um script mal-intencionado (a menos que programaticamente você mesmo criou a sequência).Por exemplo, quando você lê sequências fora de um banco de dados, você deve supor que elas possam conter scripts mal-intencionado.Os desenvolvedores mais conscientes com segurança desconfiam mesmo de seus próprios dados, na teoria de que um usuário mal-intencionado pode ter encontrado uma maneira de tomar o banco de dados.

ASP.NET lhe oferece várias maneiras para ajudar a proteger de script maliciosos:

  • ASP.NET executa validação de solicitação contra variáveis de sequência de consulta e formulário, bem como valores de cookies.Por padrão, se o atual Request contiver elementos HTML-codificados ou determinados caracteres HTML (como &#151; para um travessão), a estrutura página ASP.NET gerará um erro.

  • Se você deseja exibir sequências em seu aplicativo, mas não confia neles, aplique a codificação HTML quando as sequências são escritas novamente em uma resposta a eles.Por exemplo, com a codificação, a marca <b> se torna &lt;b&gt;.Você pode fazer isso se as sequências que você está exibindo são de um banco de dados cujo conteúdo você não tem certeza que você pode confiar.

  • Se você quiser que seu aplicativo aceite alguns HTML (por exemplo, algumas instruções de formatação de usuários), você deve codificar o HTML no cliente antes dele ser enviado para o servidor.Para obter mais informações, consulte Como: Proteger contra exploits script em um aplicativo Web da Web, Applying HTML Encoding to Strings.

  • Para ajudar a proteger contra vulnerabilidades da instrução SQL, nunca crie consultas SQL usando concatenação de sequência de caracteres.Em vez disso, use uma consulta parametrizada e atribua a entrada do usuário aos objetos de parâmetro.Para obter detalhes, consulte:Parâmetros em comandos do adaptador de dados.

  • Sempre valide a entrada de formulário em relação a um conjunto de valores e sequências formatados / tipo de validação esperados.Por exemplo, se uma variável formulário específica é esperada para ser um inteiro, use o Int32.TryParse método para verificar que realmente o valor é um número inteiro e usar a verificação de intervalo para ajudar a garantir que o valor está em um intervalo aceitável.

Consulte também

Tarefas

Como: Proteger contra exploits script em um aplicativo Web da Web, Applying HTML Encoding to Strings

Conceitos

Visão Geral sobre Ameças de Segurança em Aplicativos da Web

Práticas de segurança básica para aplicativos da Web