Discussion:
NO poder saber la URL de un archivo descargado.
(demasiado antiguo para responder)
unknown
2008-01-09 12:12:39 UTC
Permalink
hay varias
Por ejemplo, cuando el cliente pide el archivo:
- generas una palabra alfanumérica de manera aleatoria
- haces una copia de tu fichero
- renombras la copia con el alfanumerico
- descargas la copia
- borras la copia

Cuando quieran ver el origen o saltarse la linea de descarga no encontrarán
el archivo.
--
================
¥-- Lombar --¥
Jose Lombardia
***@Lombar.com
================
Visita mi blog:
Comer y Rodar
www.lombar.com
================

"~jose~" <***@gmail.com> escribi� en el mensaje de noticias news:80a26f61-69aa-4bab-aff5-***@i12g2000prf.googlegroups.com...
Hola, que tal?, Feliz año a todos.

Bueno, mi problema es el siguiente.
Tengo una web que para hacer descargas de archivos hay que ingresar un
código en un textbox y este es el que permite la descarga o no. Si la
permite con un response.redirect() el cliente puede descargalo. Hasta
aquí todo bien, el problema es que el cliente no tiene que poder saber
desde donde se ha descargado el archivo bien sea para que no vaya
directamente a la url y lo descargue otra vez o para que no intente
adivinar las otras descargas que existen en esa carpeta. He estado
probando con eliminar la cache mediante estos códigos:

<%
Response.Expires = 60
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
%>

Pero si el cliente es un pelín avispado si vas a la carpeta de
archivos temporales mientras se está descargando el archivo, se puede
ver perfectamente toda la URL entera.

Por si acaso os digo que NO tengo acceso al servidor, eh!, es servidor
de pago, lo digo por si se os ocurre alguna solución en la que haya
que tocar el servidor.

Bueno, pues eso, si me podéis ayuda..., cualquier sugerencia (o
solución, jejeje) será bien venida.

Un saludo,
jose
urko binarya
2008-01-09 13:28:19 UTC
Permalink
si tienes la posibilidad de utilizar el componente aspupload
creas un fichero que se llame descargar.asp:
<%
set FSO = server.createObject("Scripting.FileSystemObject")
fichero=Server.MapPath("documentos/servicios/"&request.querystring("fi"))
if (fso.FileExists(fichero)) then
Set Upload = Server.CreateObject("Persits.Upload")
Upload.SendBinary fichero, True, "application/octet-stream", True

end if%>

y le pasas el nombre del fichero por querystring.
Tambien para que no viese el nombre del fichero podrias pasar el id del
fichero o un codigo (esto es mejor por si le da por poner ids diferentes)
luego buscas el fichero en la bd y lo descaragas
<%set rst=base.execute("select * from ficheros where
codigofichero='"&request.querystring("fi")&"' ")
if not rst.eof then
elfichero=rst("nombre")
fichero=Server.MapPath("documentos/servicios/"&elfichero)
if (fso.FileExists(fichero)) then
Set Upload = Server.CreateObject("Persits.Upload")
Upload.SendBinary fichero, True, "application/octet-stream", True

end if
else
response.redirect("error.asp")
end if%>

saludos
urko





"~jose~" <***@gmail.com> escribi� en el mensaje news:80a26f61-69aa-4bab-aff5-***@i12g2000prf.googlegroups.com...
Hola, que tal?, Feliz año a todos.

Bueno, mi problema es el siguiente.
Tengo una web que para hacer descargas de archivos hay que ingresar un
código en un textbox y este es el que permite la descarga o no. Si la
permite con un response.redirect() el cliente puede descargalo. Hasta
aquí todo bien, el problema es que el cliente no tiene que poder saber
desde donde se ha descargado el archivo bien sea para que no vaya
directamente a la url y lo descargue otra vez o para que no intente
adivinar las otras descargas que existen en esa carpeta. He estado
probando con eliminar la cache mediante estos códigos:

<%
Response.Expires = 60
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
%>

Pero si el cliente es un pelín avispado si vas a la carpeta de
archivos temporales mientras se está descargando el archivo, se puede
ver perfectamente toda la URL entera.

Por si acaso os digo que NO tengo acceso al servidor, eh!, es servidor
de pago, lo digo por si se os ocurre alguna solución en la que haya
que tocar el servidor.

Bueno, pues eso, si me podéis ayuda..., cualquier sugerencia (o
solución, jejeje) será bien venida.

Un saludo,
jose
urko binarya
2008-01-10 08:20:58 UTC
Permalink
efectivamente es que no tienes instalado el aspupload.
http://www.aspupload.com/
lo vas a utilizar en local? tienes una version de prueba, no registrada,
pero si te vale para hacer pruebas, y si luego
el servidor donde vas alojar tiene el componente, ni tan mal.

podrias mirar si donde vas alojar los ficheros, si es un servidor contratado
externo, tipo arsys, la mayoria tienen instalado este componente
o otros que realizan la misma tarea.
que componente utilizas para subir los ficheros a la web?
podrias probar con el mismo.

saludos
urko



"~jose~" <***@gmail.com> escribi� en el mensaje news:6364653d-b9b4-4809-b98c-***@l32g2000hse.googlegroups.com...
Hola otra vez,
he estado haciendo pruebas y ya me empieza a tirar el error en esta
linea:

Set Upload = Server.CreateObject("Persits.Upload")

esto de : Persits.Upload que es?, es lo de aspupload?

Un saludo
jose
Post by urko binarya
si tienes la posibilidad de utilizar el componente aspupload
<%
set FSO = server.createObject("Scripting.FileSystemObject")
fichero=Server.MapPath("documentos/servicios/"&request.querystring("fi"))
if (fso.FileExists(fichero)) then
Set Upload = Server.CreateObject("Persits.Upload")
Upload.SendBinary fichero, True, "application/octet-stream", True
end if%>
y le pasas el nombre del fichero por querystring.
Tambien para que no viese el nombre del fichero podrias pasar el id del
fichero o un codigo (esto es mejor por si le da por poner ids diferentes)
luego buscas el fichero en la bd y lo descaragas
<%set rst=base.execute("select * from ficheros where
codigofichero='"&request.querystring("fi")&"' ")
if not rst.eof then
elfichero=rst("nombre")
fichero=Server.MapPath("documentos/servicios/"&elfichero)
if (fso.FileExists(fichero)) then
Set Upload = Server.CreateObject("Persits.Upload")
Upload.SendBinary fichero, True, "application/octet-stream", True
end if
else
response.redirect("error.asp")
end if%>
saludos
urko
Hola, que tal?, Feliz año a todos.
Bueno, mi problema es el siguiente.
Tengo una web que para hacer descargas de archivos hay que ingresar un
código en un textbox y este es el que permite la descarga o no. Si la
permite con un response.redirect() el cliente puede descargalo. Hasta
aquí todo bien, el problema es que el cliente no tiene que poder saber
desde donde se ha descargado el archivo bien sea para que no vaya
directamente a la url y lo descargue otra vez o para que no intente
adivinar las otras descargas que existen en esa carpeta. He estado
<%
Response.Expires = 60
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
%>
Pero si el cliente es un pelín avispado si vas a la carpeta de
archivos temporales mientras se está descargando el archivo, se puede
ver perfectamente toda la URL entera.
Por si acaso os digo que NO tengo acceso al servidor, eh!, es servidor
de pago, lo digo por si se os ocurre alguna solución en la que haya
que tocar el servidor.
Bueno, pues eso, si me podéis ayuda..., cualquier sugerencia (o
solución, jejeje) será bien venida.
Un saludo,
jose
unknown
2008-01-09 18:18:46 UTC
Permalink
Con el borrado efectivamente tienes el problema descrito. Pero si sabes mas
o menos cuanto es el tiempo que puede durar una descarga. Puedes hacer una
sencilla subrutina que te borre por tiempo. Si por ejemplo cada cadena la
empiezas por 4 digitos que representen la hora y los minutos, puedes hacer
que cuando alguien entre en la página principal borre los que tienen mas de
cierta antigüedad y por el propio nombre la puedes conocer.
--
================
¥-- Lombar --¥
Jose Lombardia
***@Lombar.com
================
Visita mi blog:
Comer y Rodar
www.lombar.com
================

"~jose~" <***@gmail.com> escribi� en el mensaje de noticias news:8dd5c12b-a719-4778-8f46-***@t1g2000pra.googlegroups.com...
Hola, que tal?
Sobre la solución que propones, creo que sabré hacerla excepto el
último punto.
Si descargo el archivo con un response.redirect() las lineas de código
que le siguen no se ejecutan (probé con response.write...) entonces
como puedo eliminar la copia si se ha interrumpido el código? y... ya
podré eliminar la copia si se supone que se está descargando el
archivo?

Y sobre lo de...
Post by unknown
hay varias
Que otras formas se te ocurren (si no encontramos solución para las
preguntas que he hecho sobre la propuesta)?

Gracias y un saludo
jose
Post by unknown
hay varias
- generas una palabra alfanumérica de manera aleatoria
- haces una copia de tu fichero
- renombras la copia con el alfanumerico
- descargas la copia
- borras la copia
Cuando quieran ver el origen o saltarse la linea de descarga no encontrarán
el archivo.
--
================
¥-- Lombar --¥
Jose Lombardia
================
Comer y Rodarwww.lombar.com
================
Hola, que tal?, Feliz año a todos.
Bueno, mi problema es el siguiente.
Tengo una web que para hacer descargas de archivos hay que ingresar un
código en un textbox y este es el que permite la descarga o no. Si la
permite con un response.redirect() el cliente puede descargalo. Hasta
aquí todo bien, el problema es que el cliente no tiene que poder saber
desde donde se ha descargado el archivo bien sea para que no vaya
directamente a la url y lo descargue otra vez o para que no intente
adivinar las otras descargas que existen en esa carpeta. He estado
<%
Response.Expires = 60
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
%>
Pero si el cliente es un pelín avispado si vas a la carpeta de
archivos temporales mientras se está descargando el archivo, se puede
ver perfectamente toda la URL entera.
Por si acaso os digo que NO tengo acceso al servidor, eh!, es servidor
de pago, lo digo por si se os ocurre alguna solución en la que haya
que tocar el servidor.
Bueno, pues eso, si me podéis ayuda..., cualquier sugerencia (o
solución, jejeje) será bien venida.
Un saludo,
jose
unknown
2008-01-10 09:18:09 UTC
Permalink
Realmente tu solución es de servidor.
En servidores Apache hay un fichero llamado .htaccess en elc ual puedes
fijar ciertas directrices, por ejemplo de session. De esa manera crearias
una sesion que expire en ciertos minutos y entras a la carpeta de descarga.
Si entras directo no hay session y le redireccionas a la pagina.
En IIS la cosa no es tan sencilla. Existe una aplicacion de servidor llamada
IISpassword que se instala en el servidor y que hace ese cometido, pero
pocos hosting la tienen implementada. Para el cliente final se comporta como
un objeto, como ASPemail, ASPupload,...

El tema de renombrar es lioso y malo. Aumentas la carga del servidor y si
tienes muchas descargas podrías llenar tu espacio de replicas del mismo
archivo.
--
================
¥-- Lombar --¥
Jose Lombardia
***@Lombar.com
================
Visita mi blog:
Comer y Rodar
www.lombar.com
================

"~jose~" <***@gmail.com> escribi� en el mensaje de noticias news:41628310-011d-4f45-9ca5-***@q39g2000hsf.googlegroups.com...
Hola, que tal?
Post by unknown
Pero si sabes mas
o menos cuanto es el tiempo que puede durar una descarga.
Esto es muy dificil, y si el usuario tiene modem y le cuesta mucho
descargar? y si el usuario empieza a descargar y pausa la descarga?,
mmm...

No te parece un poco complicadillo?
se te ocurre alguna otra cosa?
Gracias por intentar ayudarme
jose.
Post by unknown
sencilla subrutina que te borre por tiempo. Si por ejemplo cada cadena la
empiezas por 4 digitos que representen la hora y los minutos, puedes hacer
que cuando alguien entre en la página principal borre los que tienen mas de
cierta antigüedad y por el propio nombre la puedes conocer.
--
================
¥-- Lombar --¥
Jose Lombardia
================
Comer y Rodarwww.lombar.com
================
Hola, que tal?
Sobre la solución que propones, creo que sabré hacerla excepto el
último punto.
Si descargo el archivo con un response.redirect() las lineas de código
que le siguen no se ejecutan (probé con response.write...) entonces
como puedo eliminar la copia si se ha interrumpido el código? y... ya
podré eliminar la copia si se supone que se está descargando el
archivo?
Y sobre lo de...>hay varias
Que otras formas se te ocurren (si no encontramos solución para las
preguntas que he hecho sobre la propuesta)?
Gracias y un saludo
jose
Post by unknown
hay varias
- generas una palabra alfanumérica de manera aleatoria
- haces una copia de tu fichero
- renombras la copia con el alfanumerico
- descargas la copia
- borras la copia
Cuando quieran ver el origen o saltarse la linea de descarga no encontrarán
el archivo.
--
================
¥-- Lombar --¥
Jose Lombardia
================
Comer y Rodarwww.lombar.com
================
Hola, que tal?, Feliz año a todos.
Bueno, mi problema es el siguiente.
Tengo una web que para hacer descargas de archivos hay que ingresar un
código en un textbox y este es el que permite la descarga o no. Si la
permite con un response.redirect() el cliente puede descargalo. Hasta
aquí todo bien, el problema es que el cliente no tiene que poder saber
desde donde se ha descargado el archivo bien sea para que no vaya
directamente a la url y lo descargue otra vez o para que no intente
adivinar las otras descargas que existen en esa carpeta. He estado
<%
Response.Expires = 60
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
%>
Pero si el cliente es un pelín avispado si vas a la carpeta de
archivos temporales mientras se está descargando el archivo, se puede
ver perfectamente toda la URL entera.
Por si acaso os digo que NO tengo acceso al servidor, eh!, es servidor
de pago, lo digo por si se os ocurre alguna solución en la que haya
que tocar el servidor.
Bueno, pues eso, si me podéis ayuda..., cualquier sugerencia (o
solución, jejeje) será bien venida.
Un saludo,
jose- Ocultar texto de la cita -
- Mostrar texto de la cita -
Loading...