Informática y Sistemas (β)

2009/10/28 - 28 octubre 2009

Manejo de errores en capa de presentación web

Filed under: Tips de Desarrollo — Mario Mendez @ 00:06
Tags:

En términos ideales los errores en aplicaciones no deben producirse, pero esto es inevitable y tarde o temprano suceden. En el ámbito web donde la mayoría de las aplicaciones apuntan a usuarios externos o casuales, los errores internos de las aplicaciones suelen presentarse con una información detallada que si bien es de gran ayuda a un programador, en realidad están volcando datos sensibles de la infraestructura interna del sitio y sus componentes. Esta información, inservible para la mayoría de los usuarios casuales, es buscada deliberadamente por hackers o delincuentes digitales quienes hacen caer a propósito los sitios para obtener datos y afinar sus ataques o accesos no autorizados. Por ello es sumamente importante tener en cuenta las recomendaciones para evitar estas filtraciones.

Básicamente, un error de capa web no manejado se presenta en una página neutra del explorador, donde se indican detalles del mismo y sus orígenes. En programación de .net (aspx y framework 1.1 o superior) se pueden realizar algunas configuraciones básicas en su archivo web.config para redirigir ciertos códigos básicos a páginas de error específicas; pero este método es sumamente incompleto y resulta poco práctico frente a la variedad de errores que pueden producirse no solo a nivel de navegación, sino propios de las librerías referenciadas o de acceso a servicios y bases de datos. Lo importante para evaluar un sistema de manejo de errores es considerar los siguientes principios:

  • El error debe estar siempre manejado dentro de la aplicación web, para que el usuario no pierda de vista la aplicación. En efecto, un error no manejado deriva en la página neutra de explorador por lo que virtualmente un usuario queda fuera del ámbito del sitio y sin tener en claro como proseguir a continuación.
  • No debe confundirse un error de sistema, con errores por operación del usuario o validaciones típicas del negocio del mismo. En estos últimos casos se necesitan implementar mecanismos que expliquen y guíen al usuario sobre los pasos que originaron su error e instrucciones sobre cómo evitarlos.
  • La página de error no debe filtrar información sensible o de detalle del error. Lo mejor es explicar en la página que se produjo un error no previsto, y los detalles pueden guardarse en un log dedicado (en archivo o de sistema operativo) para que un administrador del sistema pueda consultarlo a nivel interno.
  • La página de error debe implementar las instrucciones y enlaces o botones necesarios para que el usuario pueda proseguir con la operación del sitio.

Como siempre, la implementación de estas recomendaciones que pueden ser sumamente sencillas en aplicaciones Windows, en el ámbito de las aplicaciones web suelen complicarse notablemente. En este sentido, para nuestro auxilio existe un componente que no se instala por defecto en los sitios, pero que resulta en un gran apoyo para auxiliar al control de errores, se trata del archivo de aplicación global.asax; donde se ofrecen los métodos necesarios para el manejo de eventos globales en el ámbito web. En este archivo se encontrara el evento OnError donde pueden interceptarse los errores y darles el tratamiento más adecuado al caso. Es recomendable estudiar los casos en forma independiente si se utilizan autenticación Windows o de formulario (forms authentication) ya que suelen tener comportamientos diferenciados.

Por último acompaño un video demostrativo donde puede apreciarse el manejo de errores obtenido gracias a la intercepción de eventos a nivel global, con el archivo global.asax; y la derivación del contenido a una página de error dentro del ámbito de la aplicación web. En este caso el mecanismo determina si se trata de un error no manejado (excepción) o un aviso al usuario, personalizando la presentación de la página de error respectiva. En el último ejemplo puede verse como se ocultan los detalles del origen (stack trace), colocándose solo una leyenda genérica para el usuario común. Debe prestarse atención a que la página de error tiene sus propios botones para ayudar a la navegación o recuperación de la operación del sitio.

(tiny)

Deja un comentario »

No hay comentarios aún.

RSS feed for comments on this post. TrackBack URI

Deja un comentario

Blog de WordPress.com.