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

Proteger un fichero

Estas en el tema de Proteger un fichero en el foro de ASP Clásico en Foros del Web. Buenas. Tengo un codigo ASP que tira de SQL server 2005 Express para sacar una serie de nombres de ficheros y su correspondiente enlace en ...
  #1 (permalink)  
Antiguo 21/02/2006, 11:17
Avatar de HookerSP  
Fecha de Ingreso: diciembre-2004
Mensajes: 983
Antigüedad: 20 años, 4 meses
Puntos: 12
Proteger un fichero

Buenas.

Tengo un codigo ASP que tira de SQL server 2005 Express para sacar una serie de nombres de ficheros y su correspondiente enlace en el servidor, de tal forma que pinchando el nombre uno se lo puede bajar. (El a href se genera con el asp que pa eso vale).

A esta página ASP solo puede accederse previa validación con usuario y contraseña con toda la movida esa de la "sesion".

El problema está en que si alguien sabe la URL completa del fichero, se lo puede bajar sin pasar por la autenticación. ASP permite controlar el acceso a paginas pero no a ficheros segun entiendo yo.

¿Como puedo proteger el ficher sin usar permisos de windows?. Con permisos de windows está claro, pero preferiría evitar eso porque es bastante coñazo.

Van a ser unas paginas cuya idea es crear un usuario y darle un tiempo de actividad para bajar el fichero. Pasado ese tiempo queda invalidado. Ya lo tengo todo programado en ASP pero me falla este "pequeño" detalle.

Gracias por adelantado.
Hooker
  #2 (permalink)  
Antiguo 21/02/2006, 11:32
Avatar de JoseGCB  
Fecha de Ingreso: noviembre-2004
Ubicación: Caracas Venezuela
Mensajes: 91
Antigüedad: 20 años, 5 meses
Puntos: 0
que tal si al comienzo de cada pagina preguntas si las variables de session si estan vacias o son nulas redireccionas a la pagina de inicio si no ejecutas el proceso...

espero te funcione

saludos
__________________
:-D El peor error es no hacer nada
por pensar que es poco lo que se puede hacer..!!!
  #3 (permalink)  
Antiguo 21/02/2006, 11:50
Avatar de gorka_arai  
Fecha de Ingreso: octubre-2005
Mensajes: 281
Antigüedad: 19 años, 6 meses
Puntos: 1
La idea fundamental es la del koleguilla JoseGCB.
Debes crear en el momento de logueo (si ha sido satisfactorio, claro ) una variable de tipo session que se llame por ejemplo... autentificado. Luego, en cada página de tu sitio debes incluir una referencia a otra página (Llámala "Seguridad.asp") que preguntará por esa vbe. Si esa vbe existe pos adelante!!! Si no, pos lo mandas a logarse de nuevo.
¿Cómo se hace la referncia a "Seguridad.asp"? Pos así:

Esta debe ser la primera línea (antes incluso que la etiqueta HTML) de todas las páginas que quieras bloquear a listillos.
Código:
<!--#include file="Seguridad.asp"-->
En "Seguridad.asp" deberás tener algo parecido a esto:

Código:
<%
	Response.Buffer=true
	'Compruebo que la vbe de sesion "autentificado" este creada y con el dato correcto (si)
	'si no es asi redirijo a la pagina de autentificacion
	if session("autentificado")<>"si" then
		Response.Redirect "Index.asp"
		Response.End
	end if
	%>
Aupa. Agurtxo
  #4 (permalink)  
Antiguo 22/02/2006, 01:20
Avatar de HookerSP  
Fecha de Ingreso: diciembre-2004
Mensajes: 983
Antigüedad: 20 años, 4 meses
Puntos: 12
Agradecido pero eso ya lo hago. Asi es como se protege una pagina en ASP.

No he sabido explicarme.

Eso lo hago para proteger la página que visualiza la lista de ficheros con su enlace para bajarlo. En el enlace, al pinchar con el boton derecho, el explorer saca la ventada de ABRIR o GUARDAR COMO. Ahi esta el problema, que el que se sepa la URL del fichero se lo puede bajar porque al ponerla en el navegador NO ejecuta el ASP.

<a href=../download/" & (Trim(miRecSet("t_carpeta"))) & "/" & (Trim(miRecSet("t_fichero"))) & ">" & miRecSet("t_fichero") &"</a>"

El que sepa la ruta de t_carpeta/t_fichero se lo baja sin pasar por el ASP que genera eso.

No se si me he explicado. En cualquier caso gracias por vuestra atención.-
Hooker
  #5 (permalink)  
Antiguo 22/02/2006, 02:28
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 8 meses
Puntos: 18
mediante la copia de ficheros podrías hacerlo: me explico: copias el fichero a descargar a un directorio temporal y le cambias el nombre al session_id del usuario más su propia extensión y apuntas ahí el enlace. después, en las cabeceras de todas las páginas(si tienes un fichero cabecera.asp que ya lo incluyes lo tienes más fácil) incluyes un script que BORRE los ficheros del directorio temporal cuyo nombre sea el de la sesión de usuario.

es sólo un método, seguro que hay alguno por ahí mejor
busca en las FAQ

PD: a mí también me gusta Hooker, pero desde que ví en concierto a BBKing en Zaragoza....
  #6 (permalink)  
Antiguo 22/02/2006, 05:04
Avatar de HookerSP  
Fecha de Ingreso: diciembre-2004
Mensajes: 983
Antigüedad: 20 años, 4 meses
Puntos: 12
He encontrado una solucion mejor.

<INPUT onClick="document.location.href='../download/<%=Trim(miRecSet("t_carpeta"))%>/<%=Trim(miRecSet("t_fichero"))%>'" type=submit value=Descargar>

Eso en lugar de crear un a href en el HTML pone un boton que al poner el raton encima NO SE VE LA RUTA donde está el fichero.
--------------------------------------------------
Yo vi el concierto de BB King en Madrid y ........... aún me estoy relamiendo.
jejej
viva el blues

Hooker
  #7 (permalink)  
Antiguo 22/02/2006, 07:48
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 8 meses
Puntos: 18
vale, de acuerdo, pero como tú dices, mirando el código html van a saber cual es la ruta.

tú mismo
  #8 (permalink)  
Antiguo 22/02/2006, 08:53
Avatar de ElAprendiz  
Fecha de Ingreso: enero-2002
Ubicación: Maipu, Chile
Mensajes: 3.706
Antigüedad: 23 años, 3 meses
Puntos: 2
yo utilizo la idea general de trasgukabi, es decir archivos temporales. apenas lo creas o si ya estan creados los copias a una carpeta temporal, luego al ir a otra pagian o transcurrido un lapso se borran automaticamente


saludos
__________________
Manual de ASP Avanzado ;-)
  #9 (permalink)  
Antiguo 22/02/2006, 13:05
 
Fecha de Ingreso: enero-2006
Mensajes: 9
Antigüedad: 19 años, 3 meses
Puntos: 0
Hola espero que todos esten muy bien,tengo un grave problema no se leer informacion pasos a paso a campo a campo de un archivo excel(xls)para mandarlo a una base de datos. El archivo xls tiene el siguiente formato:

Doc.compr. Pos. Proveedor Material
5100010315 00010 2000441 T0197Z4
5100010315 00020 2000441 T01A8Z4
5100010315 00030 2000441 T01B5Z4
5100010315 00040 2000441 T01A2Z4
5100010972 00010 2000441 V1901V1
5100011822 00010 2000441 T3522Z4
con este codigo lo leo pero de verdad que no se como leerlo paso a paso (campo a campo ), para poder enviarlo a la base de datos.


Si hay alguien que me pueda ayudar porfa se lo agradezco mucho.
please!!!!!!!!!!!!!!! :)


@LANGUAGE="VBSCRIPT" CODEPAGE="1252"














'Las variables del archivo adovbs.inc
Const adOpenStatic = 3
Const adLockPessimistic = 2

'Nos conectamos a la hoja de datos del Excel
Set db = Server.CreateObject("ADODB.Connection")
Dim conexion
conexion = "Driver={Microsoft Excel Driver (*.xls)};DBQ=C:\Documents and Settings\lrada1\Escritorio\orden.xls;"
db.open conexion

'Recordset correspondiente a un rango de datos
set rs = Server.CreateObject("ADODB.Recordset")
SQLStr = "select*from ordenes"
rs.open SQLStr, conexion, adOpenStatic, adLockPessimistic, adCmdText


'Número de columnas de la tabla
columnas = rs.Fields.Count

Response.Write("")

'Mostramos el tiulo de la tabla.
For I = 0 To columnas - 1
Response.Write " " & rs.Fields.Item(I).Name & " "
Next

Response.Write("
")



'Mostramos los datos
Do While Not rs.EOF
Response.Write(" ")
For I = 0 To columnas - 1
Response.Write (" " & rs.Fields.Item(I).Value & " ")
Next
Response.Write "
"
rs.MoveNext


Loop

Response.Write(" ")
'Eliminamos el recordset
rs.Close
Set rs = Nothing

'Eliminamos la bd
db.Close
Set db = Nothing
  #10 (permalink)  
Antiguo 23/02/2006, 01:25
Avatar de HookerSP  
Fecha de Ingreso: diciembre-2004
Mensajes: 983
Antigüedad: 20 años, 4 meses
Puntos: 12
Cita:
Iniciado por trasgukabi
vale, de acuerdo, pero como tú dices, mirando el código html van a saber cual es la ruta.

tú mismo
Efectivamente se ve en el código fuente. No es tan descarado como antes que se ve en la parte inferior del navegador pero ..... se ve.

Voy a darle unas vueltas en la cabeza a la idea esa que me habeis dado. Gracias por vuestra ayuda.

Hooker
  #11 (permalink)  
Antiguo 23/02/2006, 01:28
Avatar de HookerSP  
Fecha de Ingreso: diciembre-2004
Mensajes: 983
Antigüedad: 20 años, 4 meses
Puntos: 12
Irada, ¿No sera mejor que habras un hilo fuera de este?. Lo digo porque asi tu post lo leera mas gente.

Saludos
Hooker
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 08:16.