Busqueda local

Loading

martes, 12 de abril de 2011

Image Handler (MVC y WebForms)

En una aplicación web , cualquier pista que le permitamos obtener a un hacker, es suficiente para que tengan alguna idea de cómo está organizado nuestro sitio, o simplemente saber cuál es el sistema operativo, etc. Algo tan simple como la ruta de una imagen al ser obtenida del sitio puede ser suficiente.
 

Http Handler

ASP.NET nos ofrece una funcionalidad que nos permite implementar un HTTP Handler. El principio es simple, cada vez que una página es solicitada la solicitud es atendida por un objeto que implementa la interface IHttpHandler, la cual requiere un método llamado ProcessRequest que se encarga de escribir lo necesario como salida.
El HTTP Handler implementa la misma interface, y por consiguiente es muy fácil crear un Rest Service que pueda enviar imágenes como resultado. Al handler podemos enviarle parámetros en la misma cadena de solicitud. Si usamos un entero o un Guid, la ruta quedaría encapsulada en la lógica del código de nuestro RestService.
 

Que necesitamos?

Un Generic Handler, al cual llamaremos ImageHandler:
handler1
El código original se ve así:
handler2
Nosotros tendremos que escribir el código del método que procesa la solicitud. Primero obtendremos el id que nos envía la pagina, ya sea un entero o un guid.
hanlder3
En la sección de declaraciones de variables, usaremos la ruta de una imagen default en caso de no encontrar la que se solicita. (Mecanismo no incluido)
handler4
Con este dato podríamos buscar en nuestra base de datos (código comentado).
Una vez obtenida la ruta, verificamos que el archivo exista para poder cargarlo:
handler5
Regresamos el resultado:
handler6
En la página el código html debe ser algo así:
handler8
Cuando ejecutamos nuestra aplicación la página presentara la imagen:
handler9
Este ejemplo funciona para MVC y WebForms.
Por ultimo el código completo del handler seria este:
handler7
El poder del código solo es completo, si tenemos el conocimiento de como usarlo.

No hay comentarios:

Publicar un comentario