2009-01-30 20 views
8

Aquí hay uno interesante para usted.Cómo detener un error de 500 .net creado llamando a la página de error 500

Tengo mi configuración personalizada 500.aspx que se llama cuando se produce un error 500 en mi solicitud. El archivo 500.aspx también me envía un correo electrónico con los detalles del error.

he notado un pequeño problema.

Si intenta un ataque XSS en el propio 500.aspx, la página 500 no se llama.

Esto es obviamente algún tipo de problema de lógica.

De hecho, Microsoft sí mismos sufren el mismo problema.

verlo en acción aquí

http://www.microsoft.com/500.aspx?aspxerrorpath=%3Cscript%3Ealert(%22XSS%22)%3C/script%3E

¿Cómo puedo evitar esto?

Ed

Respuesta

0

Parece ser que una vez que se define una página específica para manejar (o no específica?) Errores, ya no está disponible directamente a través de su URL, sorta como el web.config no puedo ser llamado a través del navegador .

Me gustaría establecer una 500Test.aspx la que se produce una excepción causando un error 500 (y por tanto dispara el 500.aspx)

que podría funcionar.

1

Si intenta un ataque xss en cualquier página, no se llamará a la página de error personalizado (aquí está another random page on Microsoft.com con xss en la cadena de consulta).

El comportamiento parece ser intencional para detener el ataque en seco. Incluso el mensaje de error indica este comportamiento:

Solicitud de validación ha detectado un valor potencialmente peligrosa entrada del cliente , y el procesamiento de la solicitud ha sido abortada.

La única solución parece ser desactivar la validación o capturar y manejar el error en su global en Application_Error.

0

You es posible que desee pensar en el manejo de los errores en el evento Application_Error en Global.asax.cs en lugar de la página 500.aspx. Podrías poner el código de correo electrónico allí, luego redirigir al usuario a una página de error después de que hayas hecho tu gestión de errores (así es como lo hacemos donde yo trabajo).

Cuestiones relacionadas