Foros del Web » Programando para Internet » ASP Clásico »

Seguridad Web

Estas en el tema de Seguridad Web en el foro de ASP Clásico en Foros del Web. Hola.. de nuevo por aqui, bueno antes que nada estoy haciendo una web donde se descarga contenido, pero ese contenido solo lo pueden descargar aquellos ...
  #1 (permalink)  
Antiguo 09/05/2008, 11:52
Avatar de RollerSky  
Fecha de Ingreso: marzo-2008
Mensajes: 123
Antigüedad: 17 años, 1 mes
Puntos: 8
Seguridad Web

Hola.. de nuevo por aqui,
bueno antes que nada estoy haciendo una web donde se descarga contenido, pero ese contenido solo lo pueden descargar aquellos usuarios que esten logueados y tengan un codigo de seguridad, mi pregunta es.. ¿ como puedo proteger la carpeta donde se almacena este contenido privado, ya que facilmente podrian copiar la url de la carpeta y extraer el contenido,? he visto en varias paginas que si uno intenta ingresar a esa carpeta le pide un user o pass o simplemente da un error de url no encontrada.

Estuve leyendo un poco acerca de los "htaccess" los probe y funcionó me protegio la carpeta, el unico detalle era que no me dejaba entrar ponia el user y pass CORRECTOS y no podia acceder a la carpeta, si este metodo sirviera necesitaria que al loguearse un usuario pudiera ingresar sin colocar ningun user ni password es decir:

cuando un usuario se inicie sesion pueda hacer las descargas pero no pueda acceder a esa carpeta directamente digitando la URL asi mismo para los usuarios que no han iniciado sesion.

espero me ayuden si saben de algun metodo para proteger contenido o bien si me ayudan con el metodo de los "htaccess", lo necesito hacer todo en ASP


salu2
  #2 (permalink)  
Antiguo 09/05/2008, 14:19
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Seguridad Web

Otra cosa que puedes hacer es poner un programa que con algunos parámetros no sensibles (nombre del archivo, tipo, etc) este sea el que mande el contenido al browser, así en la URL lo más que el usuario podría ver es la llamada a ese programa.
  #3 (permalink)  
Antiguo 09/05/2008, 19:43
Avatar de i_e_s27  
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 208
Antigüedad: 17 años, 1 mes
Puntos: 5
Re: Seguridad Web

Crea una pagina que te redireccione al archivo que quiera bajar en cuestion.
Asignale a cada archivo un ID para identificarlos.

Entonces quedaria algo asi:

tracker.asp?id=001

y en esa pagina haces un Server.Transfer al archivo que quiera bajar. Por que Server.Transfer y no Response.Redirect? Porque mantiene la URL en el explorador, entonces es un poquito mas dificil de "robar"

__________________
Demasiado mayor para ser una joven promesa, demasiado joven para ser una vieja gloria
  #4 (permalink)  
Antiguo 10/05/2008, 23:36
Avatar de RollerSky  
Fecha de Ingreso: marzo-2008
Mensajes: 123
Antigüedad: 17 años, 1 mes
Puntos: 8
Re: Seguridad Web

mm interesantes esas opciones pero me gustaria escuchar mas opiuniones para ver cual aplico, agradezco a los que me han respondido

salu2
  #5 (permalink)  
Antiguo 12/05/2008, 08:57
Avatar de RollerSky  
Fecha de Ingreso: marzo-2008
Mensajes: 123
Antigüedad: 17 años, 1 mes
Puntos: 8
Re: Seguridad Web

mas ideas? :)
  #6 (permalink)  
Antiguo 12/05/2008, 10:01
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Seguridad Web

Eso funciona, no ocupas más ideas para solo asegurar la descarga sin acceso directo por URL
  #7 (permalink)  
Antiguo 14/05/2008, 04:16
 
Fecha de Ingreso: marzo-2008
Mensajes: 12
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Seguridad Web

Añade un archivo Robots.txt para evitar que google indexe los contenidos de la carpeta que no quieres hacer pública.
  #8 (permalink)  
Antiguo 14/05/2008, 09:45
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 21 años, 4 meses
Puntos: 144
Re: Seguridad Web

Créate una carpeta al mismo nivel que tienes tu carpeta con datos (root), y le das permisos de lectura. De tal forma que tendrás 2 carpetas, una con todos tud ficheros asp y html, y otra con los documentos para descargar. La primera de las carpetas es accesible vía http, y la otra no.

Salu2
  #9 (permalink)  
Antiguo 14/05/2008, 10:43
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Re: Seguridad Web

Cita:
Iniciado por 3pies Ver Mensaje
Créate una carpeta al mismo nivel que tienes tu carpeta con datos (root), y le das permisos de lectura. De tal forma que tendrás 2 carpetas, una con todos tud ficheros asp y html, y otra con los documentos para descargar. La primera de las carpetas es accesible vía http, y la otra no.

Salu2
eso es interesante, si el usuario escribe directamente no podra descargar archivos? tendria que ser vinculado?

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #10 (permalink)  
Antiguo 14/05/2008, 11:49
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Re: Seguridad Web

Cita:
Iniciado por i_e_s27 Ver Mensaje
Crea una pagina que te redireccione al archivo que quiera bajar en cuestion.
Asignale a cada archivo un ID para identificarlos.

Entonces quedaria algo asi:

tracker.asp?id=001

y en esa pagina haces un Server.Transfer al archivo que quiera bajar. Por que Server.Transfer y no Response.Redirect? Porque mantiene la URL en el explorador, entonces es un poquito mas dificil de "robar"


Y de ser posible coloca el directorio fuera del sitio, de esa manera los archivos no pueden ser accesibles por URL.

Por lo del htaccess, eso es un tema de apache, no existe para IIS, aunque no dudo que existan herramientas que emulen esto.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #11 (permalink)  
Antiguo 15/05/2008, 08:43
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 21 años, 4 meses
Puntos: 144
Re: Seguridad Web

Cita:
Iniciado por Shiryu_Libra Ver Mensaje
eso es interesante, si el usuario escribe directamente no podra descargar archivos? tendria que ser vinculado?

Exacto. Solo puedes descargar linkando a esa carpeta (la cual está oculta, y en principio nadie conoce, ni su nombre, ni el nombre de los archivos que hay dentro).
  #12 (permalink)  
Antiguo 15/05/2008, 10:30
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Re: Seguridad Web

Cita:
Iniciado por 3pies Ver Mensaje
Exacto. Solo puedes descargar linkando a esa carpeta (la cual está oculta, y en principio nadie conoce, ni su nombre, ni el nombre de los archivos que hay dentro).
Peroooo... si está por fuera del root (a su mismo nivel)... ¿cómo vas a acceder a los archivos?
__________________
...___...
  #13 (permalink)  
Antiguo 15/05/2008, 11:03
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 21 años, 4 meses
Puntos: 144
Re: Seguridad Web

Solo puedes acceder a ellos linkándolos desde una página (esta página evidentemente está dentro del root), ya que no son accesibles vía http (esto solo está reservado a los archivos que hay dentro del root).

Ejemplo de carpetas:

<root>
<descargas>

Ahora imagina que desde el index.asp que cuelga directamente del root, quieres descargar un fichero que hay en <descargas>. Pues simplemente montas un enlace del tipo:

<a href="../descargas/archivo.zip">descargar fichero</a>

Si tipeas en la barra de direcciones algo como esto: http://www.tuweb.com/descargas/archivo.zip daría error, porque no se econtraría el documento, ya que tuweb.com apunta al root, y dentro del root no hay una carpeta llamada descargas, sino que está fuera, a su mismo nivel (habrá que darle permisos a esa carpeta, si deseas subir ficheros, si deseas permitir la descarga, y demás).

Salu2
  #14 (permalink)  
Antiguo 15/05/2008, 12:00
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Re: Seguridad Web



Lo acabo de intentar con IIS y Apache y en ambos el enlace a <a href="../carpeta/archivo.doc">descargar</a> me lleva a http://localhost/carpeta/archivo.doc. Claro que esa ruta no existe, por tanto me da un error 404.

¿Estaré haciendo algo mal?
__________________
...___...
  #15 (permalink)  
Antiguo 15/05/2008, 12:13
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 21 años, 4 meses
Puntos: 144
Re: Seguridad Web

Te tiene que funcionar, porque las descargas de la web de mi firma funcionan así (con alguna cosilla adicional, como renombrar el fichero, por ejemplo).

EDITADO: Es que me había dado cuenta que había dicho una sandez.

Última edición por 3pies; 15/05/2008 a las 12:33
  #16 (permalink)  
Antiguo 15/05/2008, 12:54
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Re: Seguridad Web

En la sección de descargas de tu sitio (http://con2huevos.com/con2huevos/descargas/descargas.asp) veo por ejemplo este enlace:

Código:
http://con2huevos.com/con2huevos/general/download.asp?archivo=con2huevos-calculadoradelimc.zip&Fichero=../../../download/con2huevos-calculadoradelimc.zip&Nombre=con2huevos-1.zip&Tamanio=11144
Supongo yo que la carpeta download está al mismo nivel que el root de tu sitio. Pero no es el enlace html quien accede al archivo ubicado en esa carpeta sino el script que tenés en download.asp. Creo que con esto quedaría demostrado que el <a href="../carpeta_al_mismo_nivel_del_root/archivo.ext"> no funciona

Ahora bien, te vuelvo a citar:

Cita:
Exacto. Solo puedes descargar linkando a esa carpeta (la cual está oculta, y en principio nadie conoce, ni su nombre, ni el nombre de los archivos que hay dentro).
Si le paso por mail a un amigo esa dirección (que contiene un documento supersecreto que sólo debe ser descargado desde tu sitio) lo podrá bajar haciendo click en el enlace o copiando y pegándolo en la barra de direcciones de su browser. Se me ocurre que deberías verificar que el referer no sea nulo ni distinto a tu dominio para asegurar la cosa.
__________________
...___...
  #17 (permalink)  
Antiguo 16/05/2008, 02:48
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 21 años, 4 meses
Puntos: 144
Respuesta: Re: Seguridad Web

Cita:
Iniciado por Al Zuwaga Ver Mensaje
Supongo yo que la carpeta download está al mismo nivel que el root de tu sitio. Pero no es el enlace html quien accede al archivo ubicado en esa carpeta sino el script que tenés en download.asp. Creo que con esto quedaría demostrado que el <a href="carpeta_al_mismo_nivel_del_root/archivo.ext"> no funciona
Efectivamente, la carpeta download está al mismo nivel que el root. Hace 2 años que lo monté y la verdad es que no recordaba si era link directo o no. Y efectivamente, no es un link directo. Se accede al fichero a través de ese script que hay en download.asp, y el cual fuerza la descarga del fichero (al menos muestra la ventana de abrir/descargar, para que el usuario elija, e impedir que se cargue directamente en pantalla el fichero, si se trata por ejemplo de una imagen, un pdf, o un doc, por poner tres ejemplos).

Acabo de revisar todo, y he probado con otro ejemplo más sencillo. Créate una carpeta llamada <descargas>, al mismo nivel de tu root, y mete dentro un fichero llamado ejemplo.zip

Ahora en una página llamada prueba.html, y que cuelga del root directamente pones solo este link a otro fichero llamado bajarficheros.asp:
Código:
<a href="bajarficheros.asp?fichero=../descargas/ejemplo.zip&Nombre=Al-Zuwaga.zip&Tamanio=20000">descargar</a>
Explicación de las variables:

fichero = nombre original del archivo.
nombre = nuevo nombre con el que queremos descargar el fichero.
tamanio = tamaño del fichero (para informar en la ventana cuando se descarga, y saber el tiempo estimado de la descarga).

Ahora en el fichero llamado bajarficheros.asp, que está en el root colgando directamente de él, coloca este código:
Código:
<%
Response.Buffer=True
Dim strFilePath, strFileSize, strFileName
Const adTypeBinary = 1
strFilePath = Request.QueryString("Fichero")
strFileSize = Request.QueryString("Tamanio")
strFileName = Request.QueryString("Nombre")
Response.Clear
'*******************************
' Requiere MDAC 2.5 o superior
'*******************************
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile Server.MapPath(strFilePath)
strFileType = lcase(Right(strFileName, 4))
'Se pueden añadir otros Content-Types de ficheros, aquí
Select Case strFileType
Case ".asf"
ContentType = "video/x-ms-asf"
Case ".avi"
ContentType = "video/avi"
Case ".doc"
ContentType = "application/msword"
Case ".zip"
ContentType = "application/zip"
Case ".xls"
ContentType = "application/vnd.ms-excel"
Case ".gif"
ContentType = "image/gif"
Case ".jpg", "jpeg"
ContentType = "image/jpeg"
Case ".wav"
ContentType = "audio/wav"
Case ".mp3"
ContentType = "audio/mpeg3"
Case ".mpg", "mpeg"
ContentType = "video/mpeg"
Case ".rtf"
ContentType = "application/rtf"
Case ".htm", "html"
ContentType = "text/html"
Case ".asp"
ContentType = "text/asp"
Case Else
'Otros ficheros
ContentType = "application/octet-stream"
End Select
Response.AddHeader "Content-Disposition", "attachment; filename=" & strFileName
Response.AddHeader "Content-Length", strFileSize
Response.Charset = "UTF-8"
Response.ContentType = ContentType
Response.BinaryWrite objStream.Read
Response.Flush
objStream.Close
Set objStream = Nothing
%>
Luego cliquea en el enlace, y te forzará la descarga del fichero que tienes en la carpeta <descargas>, y al que le cambiará el nombre, poniéndole Al-Zuwaga.zip (pese a llamarse realmente ejemplo.zip).
Cita:
Iniciado por Al Zuwaga Ver Mensaje
Si le paso por mail a un amigo esa dirección (que contiene un documento supersecreto que sólo debe ser descargado desde tu sitio) lo podrá bajar haciendo click en el enlace o copiando y pegándolo en la barra de direcciones de su browser. Se me ocurre que deberías verificar que el referer no sea nulo ni distinto a tu dominio para asegurar la cosa.
Sí, claro que podrá descargarlo, porque son ficheros públicos, y de secreto tienen poco .

Si no quieres que tu amigo se los baje, simplemente en el fichero bajarficheros.asp, antes de ese código, controlas si tiene su sesión como usuario validado (o su cookie, si lo prefieres) -para el caso de que sea un usuario registrado/validado quien solo pueda bajarse el fichero-, y si no lo tiene, pues no ejecutas el código, y lo redireccionas al index, por ejemplo:
Código:
<%if session("usuariovalidado") = true then
      'aquí viene el código anterior para forzar la descarga del fichero
else
      response.redirect "index.asp"
end if
%>
Salu2 master.

PD1: Edito para comentar, que si no quieres pasar por el querystring el nombre de la carpeta (en el ejemplo: descargas), puedes omitirlo, pasando solo el nombre del fichero (ejemplo.zip). En este caso, en la página bajarficheros.asp, solo tienes que concatenar el nombre de la ruta y el fichero así:

strFilePath = "../descargas/" & request.querystring("fichero")

Y así ya tienes la carpeta oculta ocultísima, y aunque se vea el nombre del fichero en el enlace, da igual, porque nadie sabe en qué carpeta está (y si a la carpeta la llamas "laabuelafumamaria", seguro que nadie da con ella ).

PD2: En el fichero bajarficheros.asp, puedes implemenetar más cosas, como sumar 1 hit a las descargas que haya, etc.

Última edición por 3pies; 16/05/2008 a las 04:16
  #18 (permalink)  
Antiguo 16/05/2008, 09:03
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Respuesta: Seguridad Web

Ahora si estamos, y creo que esto resuelve definitivamente la duda de RollerSky.
Un saludo!
__________________
...___...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:09.