jueves, 15 de octubre de 2009

Abrir Documento PDF ocutando el enlace del archivo en ASP

Hace unos días estaba tratando de mostrar un documento de PDF pero sin desplegar la ruta donde el archivo se encontraba disponible por un problema de seguridad que se estaba presentando. El Web site tenía el siguiente enlace de ejemplo:

<a href="/Documentos/2009/01/01/20090101_noticia.pdf" />

Este enlace se formaba a partir de: <a href="<%= getfile() %>" />, al final en el querystring el resultado era el siguiente:

http://www.web.com/documentos/2009/03/01/doc_20090301.pdf lo que permitía que varios clientes pudieran navegar por la ruta virtual buscando documentos que no tenían permisos a visualizar en ese momento.

Para corregir este inconveniente lo que hay que hacer es generar un stream en ASP y abrir el documento con un response.writebinary de la siguiente forma:

Response.AddHeader "Content-disposition", "inline; filename=" & filename& ""
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.LoadFromFile filename
Response.BinaryWrite objStream.Read
objStream.Close
Set objStream = Nothing
Response.End

De esta forma cargamos el archivo en un stream en el servidor lo que no va a permitir abrir el documento en una nueva ventana de tu explorador mostrando el nombre de la página que lo llama pero no del archivo como tal.

No hay comentarios: