Como evitar problemas de segurança de scripts entre sites

Traduções de Artigos Traduções de Artigos
Artigo: 252985 - Ver produtos para os quais este artigo se aplica.
Importante
Este artigo aplica-se para o Windows 2000. Suporte para o Windows 2000 termina em 13 de Julho de 2010. O Windows 2000 End-of-Support Solution Center é um ponto de partida para planear a estratégia de migração a partir do Windows 2000. Para mais informações consulte a Microsoft Support Lifecycle Policy.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Gerados dinamicamente páginas HTML podem introduzir os riscos de segurança se entradas não são validadas na forma no ou na forma como saída. Script mal intencionado pode ser incorporado numa entrada que é submetida para páginas Web e aparecem aos browsers como provenientes de uma origem fidedigna. Este problema é referido como um problema de segurança de scripts entre sites. Este artigo aborda problemas de segurança de scripts entre sites, as ramificações e prevenção.

Mais Informação

O problema

É o problema subjacente a várias páginas Web apresentar a entrada de dados que não é validada. Se não for validada entrada, script mal intencionado pode ser incorporado dentro de entrada. Se um script do lado do servidor, em seguida, apresenta estas entradas não validados, o script é executado no browser, como se o site fidedigno o gerado.

Ramificações

Se não for validada entrada para as páginas Web dinâmicas, poderá encontrar os seguintes problemas:
  • Integridade de dados pode ser comprometida.
  • Os cookies podem definir e ler.
  • Intervenção do utilizador pode ser interceptada.
  • Scripts maliciosos podem ser executados pelo cliente no contexto de origem fidedigna.
As páginas Web são susceptíveis? Basicamente, o problema afecta baseada em entrada não foi validada de criação de página dinâmica. Exemplos típicos incluem os seguintes tipos de páginas Web:
  • Motores de procura que devolvem resultados páginas baseiam em entrada do utilizador.
  • Páginas de início de sessão que armazenam contas de utilizador em bases de dados, cookies e assim sucessivamente e posteriormente escreve o nome de utilizador para o cliente.
  • Formulários de Web que processam informações do cartão de crédito.

Prevenção

Esta secção apresenta algumas abordagens para impedir ataques de segurança de scripts entre sites. Avalie a sua situação específica para determinar quais técnicas irão funcionar melhor para a. É importante que note que em todas as técnicas, está a validar dados que receber de entrada e não o script fidedigno. Essencialmente, prevenção significa que siga boa prática de codificação executando verificações de sanity a entrada para as rotinas.

A lista seguinte descreve abordagens gerais para impedir ataques de processamento de scripts entre sites:
  • Codificar a saída com base em parâmetros de entrada.
  • Filtre parâmetros de entrada para caracteres especiais.
  • Saída de filtro com base em parâmetros de entrada para caracteres especiais.
Quando filtrar ou codificar, tem de especificar um conjunto de caracteres para as páginas Web para se certificar de que o filtro está a verificar os caracteres especiais adequados. Sequências de bytes que são consideradas especiais baseia o conjunto de caracteres específico devem filtrar os dados que são inseridos as páginas Web. Um charset popular é ISO 8859-1, que foi a predefinição em versões anteriores do HTML e HTTP. Tem de tomar para problemas de localização de conta quando alterar estes parâmetros.

Codificar a saída com base em parâmetros de entrada para caracteres especiais

Codificar dados que recebeu como entrada quando escreve como HTML. Esta técnica é eficaz em dados que não foi validados por algum motivo durante a entrada. Utilizando técnicas, tais como URLEncode e HTMLEncode, pode impedir que script mal intencionado de executar.

Os fragmentos de código seguintes demonstram como utilizar URLEncode e HTMLEncode a partir de páginas Active Server Pages (ASP):
<%
      var BaseURL = http://www.mysite.com/search2.asp?searchagain=;
      Response.write("<a href=\"" + BaseUrl +
      Server.URLEncode(Request.QueryString("SearchString")) +
      "\">click-me</a>");
%>
<% Response.Write("Hello visitor <I>" +
      Server.HTMLEncode(Request.Form("UserName")) +
      "</I>");
%>
				
se codificar o HTML e URLs, poderá ser necessário especificar a página de código, como faria se estivesse filtrar dados.

É importante notar que chamar HTMLEncode na cadeia que está prestes a ser apresentado irá impedir que qualquer script na mesma a partir de que está a ser executado e, consequentemente, impede que o problema.

Parâmetros de entrada para caracteres especiais de filtro

Entrada filtragem funciona removendo alguns ou todos os caracteres especiais da sua entrada. Caracteres especiais são caracteres que activar o script a ser gerado dentro de uma sequência HTML. Caracteres especiais incluem o seguinte:
< > " ' % ; ) ( & + -
				
Note que a situação individual poderão justificar a filtragem de caracteres adicionais ou cadeias para além dos caracteres especiais.

Enquanto filtragem pode ser uma técnica eficaz, existem alguns avisos:
  • Filtragem poderá não ser apropriada para algumas entradas. Por exemplo, em cenários onde está a receber <text>entrada de um formulário HTML, pode, em vez disso, escolher um método como codificação (ver abaixo).
  • Alguns caracteres filtradas podem ser realmente entrada necessária para o script do lado do servidor.
O filtro de exemplo seguinte, que é escrito em JavaScript, demonstra como remover caracteres especiais:
function RemoveBad(strTemp) { 
    strTemp = strTemp.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,""); 
    return strTemp;
} 
				
o código seguinte processa a entrada do utilizador antes de os guardar para utilização posterior.
<% Session("StoredPreference") = RemoveBad(Request.Cookies("UserColor"));
         var TempStr = RemoveBad(Request.QueryString("UserName"));				

Saída de filtro com base em parâmetros de entrada para caracteres especiais

Esta técnica é semelhante a filtragem de entrada, excepto que filtrar caracteres que são escritos para o cliente. Enquanto Isto pode ser uma técnica eficaz,-poderá existir um problema para as páginas Web que escrever elementos HTML.

Por exemplo, numa página que escreve <TABLE>elementos, uma função genérica que remove os caracteres especiais seria tira o < e > caracteres, danifica a tag <TABLE>. Por conseguinte, de forma a que esta técnica ser útil, seria apenas filtrar dados transmitidos na ou dados que foi anteriormente introduzidos por um utilizador e armazenados numa base de dados.

Possíveis fontes de dados mal intencionados

Enquanto o problema aplica-se a qualquer página que utiliza a entrada para dinamicamente geram HTML, seguem-se alguns possíveis fontes de dados mal intencionados para o ajudar a verificação de ponto para potenciais riscos de segurança:
  • Cadeia de consulta
  • Cookies
  • Dados registados
  • URL e partes do URL, como, por exemplo, PATH_INFO
  • Dados obtidos a partir de utilizadores é persistente em alguns útil como, por exemplo, numa base de dados

Conclusão

Conclusão, os seguintes são pontos-chave a lembrar sobre o problema de segurança de scripts entre sites:
  • O problema afecta a criação de página dinâmica baseada em entrada não foi validada.
  • Omissão de uma verificação de sanity nos dados de entrada pode ter implicações de segurança inesperado. O problema é preventable através de normas de desenvolvimento boa como a validação de dados.
  • Terá de avaliar soluções num por site, página e até mesmo campo base e utilizar uma técnica que faz sentido.

Referências

Para mais informações, consulte o seguinte aviso a partir do computador emergência Response Team (CERT) informática da Universidade Carnegie Mellon:
http://www.cert.org/advisories/CA-2000-02.html
Para obter mais informações, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
253117Internet Explorer e Outlook Express impedir sites scripts problemas de segurança
253119Como rever código ASP para vulnerabilidade CSSI
253120Como rever Visual InterDev gerado código para a vulnerabilidade CSSI
253121Como rever código MTS/ASP para vulnerabilidade CSSI

Propriedades

Artigo: 252985 - Última revisão: 1 de março de 2006 - Revisão: 3.6
A informação contida neste artigo aplica-se a:
  • Microsoft Active Server Pages 2.0
  • Microsoft Active Server Pages 3.0
  • Microsoft Windows 2000 Server
Palavras-chave: 
kbmt kbcodesnippet kbcssi kbhowto kbsecurity KB252985 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: 252985

Submeter comentários

 

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