Cómo comprobar mediante programación la existencia de problemas de creación de nombres canónicos con ASP.NET

Seleccione idioma Seleccione idioma
Id. de artículo: 887459 - Ver los productos a los que se aplica este artículo

Renuncia de responsabilidad

La información contenida en Microsoft Knowledge Base se proporciona "tal cual" sin garantía de ningún tipo. Renunciamos a todas las garantías, expresas o implícitas, lo que incluye las garantías implícitas de comerciabilidad e idoneidad para un fin determinado. En ningún caso Microsoft Corporation o sus proveedores serán responsable de ningún daño, incluyendo los daños directos, indirectos, incidentales, consecuenciales, pérdida de beneficios empresariales o daños especiales, incluso aunque Microsoft Corporation o sus proveedores hayan sido advertidos de la posibilidad de esos daños. Algunos estados no permiten la exclusión o limitación de responsabilidades por daños consecuenciales o incidentales. En tal caso no se aplicará la limitación anterior.
Expandir todo | Contraer todo

En esta página

INTRODUCCIÓN

Este artículo describe cómo agregar métodos de protección a una aplicación ASP.NET como defensa contra los problemas de creación de nombres canónicos comunes.

Más información

¿Qué es la creación de nombres canónicos?

Es el proceso que determina cómo las diversas formas equivalentes de un nombre se resuelven en un solo nombre estándar. El nombre estándar único es conocido también como nombre canónico. Por ejemplo, en un equipo específico, los nombres c:\dir\test.dat, test.dat y ..\..\test.dat podrían referirse todos al mismo archivo. Creación de nombres canónicos es el proceso que asigna esos nombres a un nombre que es similar a c:\dir\test.dat.

Cuando un servidor Web recibe una dirección URL, aquél asigna la solicitud a una ruta del sistema de archivos que determina la respuesta. La rutina de creación de nombres canónicos que se usa para asignar la solicitud debe analizar correctamente la dirección URL para no servir ni procesar contenidos no esperados. Para obtener más información acerca de la creación de nombres canónicos, visite el siguiente sitio Web de Microsoft:
http://msdn2.microsoft.com/en-us/library/aa302420.aspx
Le recomendamos que, para proteger sus aplicaciones, use las prácticas recomendadas. Para obtener más información, consulte la sección siguiente.

Agregar creación de nombres canónicos protege su aplicación Web

Los desarrolladores de Microsoft ASP.NET pueden aumentar las comprobaciones, para ayudar a reducir los problemas de creación de nombres canónicos en una aplicación Web, si agregan un controlador de evento Application_BeginRequest a su archivo Global.asax, que está almacenado en el directorio raíz de la aplicación Web. Este controlador de evento se ejecuta por cada solicitud Web. Puede agregar código a este controlador de evento como salvaguardia contra los problemas de creación de nombres canónicos.

Código de ejemplo

Los ejemplos de código siguientes muestran la forma de agregar un controlador de evento Application_BeginRequest a un archivo Global.asax. Este controlador de evento, al realizar verificaciones de rutas de acceso, ayuda a prevenir los caracteres no válidos y las direcciones URL mal formadas. Por tanto, puede evitar los problemas comunes de creación de nombres canónicos.

Código de ejemplo de Global.asax (Visual Basic .NET)

<script language="vb" runat="server">
Sub Application_BeginRequest(Sender as Object, E as EventArgs)
    If (Request.Path.IndexOf(chr(92)) >= 0 OR _
        System.IO.Path.GetFullPath(Request.PhysicalPath) <> Request.PhysicalPath) then
        Throw New HttpException(404, "Not Found")
    End If
End Sub
</script>

Código de ejemplo de Global.asax ( C#)

<script language="C#" runat="server">
void Application_BeginRequest(object source, EventArgs e) {
    if (Request.Path.IndexOf('\\') >= 0 ||
        System.IO.Path.GetFullPath(Request.PhysicalPath) != Request.PhysicalPath) {
        throw new HttpException(404, "not found");
    }
}
</script>

Propiedades

Id. de artículo: 887459 - Última revisión: lunes, 3 de diciembre de 2007 - Versión: 2.5
La información de este artículo se refiere a:
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.0 Service Pack 1
  • Microsoft .NET Framework 1.0 Service Pack 2
  • Microsoft .NET Framework 1.0 Service Pack 3
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.1 Service Pack 1
Palabras clave: 
kbsecurity kbtshoot KB887459

Enviar comentarios

 

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