Cómo revisar código generado por Visual InterDev la vulnerabilidad de CSSI

Seleccione idioma Seleccione idioma
Id. de artículo: 253120 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

Resumen

El siguiente artículo explica cómo identificar y corregir aplicaciones de Visual InterDev que son susceptibles a CSSI (problemas de seguridad scripting entre sitios). Sólo de entrada que valida correctamente o con formato hace que la aplicación sea vulnerable a ataques.

En este artículo se centra en controles de tiempo de diseño (DTC) de InterDev Visual y la biblioteca de secuencias de comandos. Para instrucciones generales sobre el código ASP, vea el siguiente artículo de Knowledge Base:
253119Cómo revisar código ASP para la vulnerabilidad de CSSI

Más información

El DTC de InterDev Visual presentan desafíos a los desarrolladores porque parte del código se genera automáticamente. Un desarrollador que no esté familiarizado con la implementación específica de los objetos de secuencia de comandos que se generan y las vulnerabilidades de ellos o cómo tratarlos mejor. Este artículo trata todos los problemas conocidos con los DTC distintas y también trata las opciones posibles para direccionamiento esas vulnerabilidades.

Los problemas se dividen en dos categorías específicas:
  1. DTC que son secuencias de comandos para mostrar los datos de una base de datos y la base de datos contiene entradas de los usuarios.
  2. DTC que son secuencias de comandos para mostrar o utilizar datos que se envió desde el cliente.
En ambos casos, una validación adecuada y la codificación de los valores de salida impide una página basada en el DTC que se utilice en un ataque CSSI.

Al utilizar cualquier método de un DTC que recupera información desde que DTC (como, por ejemplo, .getCaption .getText, Value), cuando el valor se establece utilizando información proporcionado por el usuario, la resultante cadena no es HTMLEncoded. Además, algunos DTC que se pueden enlazar a un campo de base de datos mostrar la información de la base de datos sin procesar sin codificación. Como tal, debe HTMLEncode estos valores cuando se muestra en un explorador. Por ejemplo:
Response.Write Server.HTMLEncode(Textbox1.value)
				
si los datos que se usan como parte de una dirección URL, debe utilizar URLEncode en su lugar. Por ejemplo:
Response.Write "<A HREF=http://webserver/webapplication/page.asp?data=" & Server.URLEncode(Textbox1.value) & ">Click here!</A>"
				
puesto que existen varias maneras de codificar entrusted caracteres de código de secuencias de comandos, debe establecer explícitamente el juego para la página el explorador procesa de caracteres. Para ello puede insertar una etiqueta <meta> de lado del cliente entre las etiquetas <head> del documento. Por ejemplo:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset= ISO-LATIN-1">
				
Esto se puede también hacer desde ASP mediante la propiedad Response.CharSet:

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


Éstos son algunos ejemplos comunes:

Contraer esta tablaAmpliar esta tabla
MostrarCódigo de ejemplo
Valor de un botón de DTC
Response.Write Button1.Value()
Título de un DTC CheckBox
Response.Write CheckBox1.getCaption()
Título de una etiqueta DTC
Response.Write Label1.getCaption()
Texto de un DTC ListBox
Response.Write Listbox1.getText()
Valor de un DTC OptionGroup
Response.Write OptionGroup1.getValue()
Valor de un DTC TextBox
Response.Write Textbox1.Value()


Éstas son posibles soluciones para estos ejemplos:

Contraer esta tablaAmpliar esta tabla
MostrarCódigo de ejemplo
Valor de un botón de DTC
Response.Write Server.HTMLEncode(Button1.Value())
Título de un DTC CheckBox
Response.Write Server.HTMLEncode(CheckBox1.getCaption())
Título de una etiqueta DTC
Response.Write Server.HTMLEncode(Label1.getCaption())
Texto de un DTC ListBox
Response.Write Server.HTMLEncode(Listbox1.getText())
Valor de un DTC OptionGroup
Response.Write Server.HTMLEncode(OptionGroup1.getValue())
Valor de un DTC TextBox
Response.Write Server.HTMLEncode(Textbox1.Value())


El DTC de cuadrícula no no HTMLEncode valores recuperados de una base de datos. Si la base de datos toma la entrada del usuario (por ejemplo, un libro de visitas), deberá HTMLEncode la salida. Esto puede realizarse haciendo clic en el la ficha datos en el cuadro de diálogo Propiedades de cuadrícula y escribiendo:
=Server.HTMLEncode([fieldname])
				
donde nombredecampo es el nombre de cada campo que se muestra para esa columna. La mayoría de los DTC automáticamente HTMLEncode datos recuperan de una base de datos mostrar, algunos no. Deben realizar dichos controles utilice de código adicional para asegurarse de que salida a un cliente está correctamente HTMLEncoded.

Nota: DTC normalmente automáticamente implementar la lógica necesaria para mantener su estado durante las acciones de ida y vuelta al servidor. En el caso de que el DTC de cuadro de texto por ejemplo, cuando la información es redondo vuelta al servidor, la página de biblioteca de secuencias de comandos Textbox.asp correctamente HTMLEncodes el contenido del texto cuadro en el proceso de mantener el estado del control.

Referencias

Para obtener más información, consulte el Advisory de Computer Emergency Response Team (CERT) de Carnegie Mellon University en el siguiente sitio Web:
http://www.cert.org/advisories/CA-2000-02.html
Consulte los siguientes artículos de Knowledge Base para obtener más información:
252985Cómo evitar problemas de seguridad de scripting de Cross-Site para aplicaciones Web
253119Cómo revisar código ASP la vulnerabilidad de CSSI
253121Cómo revisar código MTS/ASP la vulnerabilidad de CSSI
253117Evitar Internet Explorer y Outlook Express problemas de seguridad de scripting de entre sitios

Propiedades

Id. de artículo: 253120 - Última revisión: jueves, 23 de enero de 2014 - Versión: 1.4
La información de este artículo se refiere a:
  • Microsoft Visual InterDev 6.0 Standard Edition
Palabras clave: 
kbnosurvey kbarchive kbmt kbcssi kbctrl kbhowto kbsecurity kbsecvulnerability KB253120 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 253120

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