Como revisar código gerado pelo Visual InterDev para a vulnerabilidade de CSSI

Traduções deste artigo Traduções deste artigo
ID do artigo: 253120 - 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

Sumário

O seguinte artigo descreve como identificar e aplicativos corretos do Visual InterDev que são suscetíveis a CSSI (cross Site Scripting problemas de segurança). Única entrada que não corretamente é validada ou formatada torna seu aplicativo vulnerável a ataques.

Este artigo se concentra no Visual InterDev Design tempo controles (DTC) e a biblioteca de scripts. Para diretrizes gerais sobre o código ASP, consulte o seguinte artigo do Knowledge Base:
253119Como revisar código ASP para a vulnerabilidade para CSSI

Mais Informações

DTCs Visual InterDev apresentar desafios únicos para os desenvolvedores porque parte do código é gerado automaticamente. Um desenvolvedor pode não estar familiarizado com a implementação específica dos objetos script que são gerados e quaisquer vulnerabilidades de-los ou como solucioná-los melhor. Este artigo aborda todos os problemas conhecidos com DTCs vários e ele também aborda as possíveis opções para lidar com essas vulnerabilidades.

Os problemas se enquadram em duas categorias específicas:
  1. Os DTCs que são executados por script para exibir dados de um banco de dados e o banco de dados contém entradas de usuários.
  2. Os DTCs que são executados por script para exibir ou dados de uso que foi enviados do cliente.
Em ambos os casos, a validação correta e a codificação de valores de saída impede uma página com base no DTC que está sendo usado em um ataque CSSI.

Ao usar qualquer método de um DTC que recupera informações do que DTC (como .getCaption .getText, Value), quando o valor foi definido usando informações de fornecido pelo usuário, a resultante seqüência não é HTMLEncoded. Além disso, alguns DTCs que podem ser vinculados a um campo de banco de dados exibem as informações brutas do banco de dados sem codificação. Assim, você deve HTMLEncode esses valores ao exibir para um navegador. Por exemplo:
Response.Write Server.HTMLEncode(Textbox1.value)
				
se os dados a ser usado como parte de uma URL, você deve usar URLEncode. Por exemplo:
Response.Write "<A HREF=http://webserver/webapplication/page.asp?data=" & Server.URLEncode(Textbox1.value) & ">Click here!</A>"
				
como existem várias maneiras para codificar caracteres de código de script entrusted, você deve definir explicitamente a caracteres definidos para a página o navegador processa. Você pode fazer isso inserindo uma marca <meta> de lado do cliente entre as marcas <head> do documento. Por exemplo:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset= ISO-LATIN-1">
				
isso também pode ser feito do ASP usando a propriedade Response.CharSet:

<% Response.Charset= "ISO-LATIN-1" %>
				


Aqui estão alguns exemplos comuns:

Recolher esta tabelaExpandir esta tabela
ExibindoCódigo de exemplo
Valor de um botão de DTC
Response.Write Button1.Value()
Legenda de um DTC CheckBox
Response.Write CheckBox1.getCaption()
Legenda de uma etiqueta DTC
Response.Write Label1.getCaption()
Texto de um DTC ListBox
Response.Write Listbox1.getText()
Valor de um DTC do grupo de opções
Response.Write OptionGroup1.getValue()
Valor de um DTC TextBox
Response.Write Textbox1.Value()


Aqui estão soluções possíveis para esses exemplos:

Recolher esta tabelaExpandir esta tabela
ExibindoCódigo de exemplo
Valor de um botão de DTC
Response.Write Server.HTMLEncode(Button1.Value())
Legenda de um DTC CheckBox
Response.Write Server.HTMLEncode(CheckBox1.getCaption())
Legenda de uma etiqueta DTC
Response.Write Server.HTMLEncode(Label1.getCaption())
Texto de um DTC ListBox
Response.Write Server.HTMLEncode(Listbox1.getText())
Valor de um DTC do grupo de opções
Response.Write Server.HTMLEncode(OptionGroup1.getValue())
Valor de um DTC TextBox
Response.Write Server.HTMLEncode(Textbox1.Value())


O DTC de grade não não valores HTMLEncode recuperados de um banco de dados. Se seu banco de dados aceita entrada do usuário (por exemplo, um livro de convidados), você deverá HTMLEncode sua saída. Isso pode ser feito clicando a guia dados da caixa de diálogo Propriedades de grade e digitando:
=Server.HTMLEncode([fieldname])
				
onde nome_do_campo é o nome de cada campo que é exibido para aquela coluna. A maioria dos DTCs automaticamente HTMLEncode dados recuperados de um banco de dados quando exibir; alguns não. Esses controles devem fazer usar de código adicional para garantir que a saída para um cliente está corretamente HTMLEncoded.

Observação: DTCs geralmente automaticamente implementar a lógica necessária para manter o seu estado durante ida e volta para o servidor. No caso do DTC de caixa de texto por exemplo, quando as informações são arredondadas ultrapassadas corretamente no servidor, a página de biblioteca de script Textbox.asp HTMLEncodes o conteúdo de texto caixa no processo de manter o estado do controle.

Referências

Para obter mais informações, consulte o seguinte comunicado do computador CERT Emergency Response Team () na Carnegie Mellon University:
http://www.cert.org/advisories/CA-2000-02.html
Consulte os seguintes artigos da Base de dados de Conhecimento para obter mais informações:
252985Como evitar problemas de segurança de scripts entre sites para aplicativos da Web
253119Como revisar código ASP para a vulnerabilidade de CSSI
253121Como revisar MTS/ASP código para a vulnerabilidade de CSSI
253117Impedindo o Internet Explorer e o Outlook Express problemas de segurança de scripts entre sites

Propriedades

ID do artigo: 253120 - Última revisão: domingo, 20 de outubro de 2013 - Revisão: 1.4
A informação contida neste artigo aplica-se a:
  • Microsoft Visual InterDev 6.0 Standard Edition
Palavras-chave: 
kbnosurvey kbarchive kbmt kbcssi kbctrl kbhowto kbsecurity kbsecvulnerability KB253120 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: 253120

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