Foros del Web » Programando para Internet » PHP »

Problemas en SEGURIDAD

Estas en el tema de Problemas en SEGURIDAD en el foro de PHP en Foros del Web. En primer lugar un saludo a todos y agradecimiento. Describo brevemente el problema que tengo para proteger archivos de audio y video en un directorio. ...
  #1 (permalink)  
Antiguo 13/12/2004, 00:46
 
Fecha de Ingreso: diciembre-2004
Mensajes: 2
Antigüedad: 13 años
Puntos: 0
Problemas en SEGURIDAD

En primer lugar un saludo a todos y agradecimiento.

Describo brevemente el problema que tengo para proteger archivos de audio y video en un directorio. El directorio es accesible por la web

Tengo una web alojada en España que vende audio y video muy especificos. Hay cesta de la compra, pago por servidor seguro etc.. y una vez que el cliente ha comprado se le envia a una pagina desde donde descargarlos.

Al pinchar en el link para DESCARGAR, hago una consulta comprobando el pago y una serie de variables en una base de datos y si todo es ok, le redirecciono a otra pagina (descargar.php) colocada en un servidor alojado en america (los gigas son alli mas baratos).

Es decir, al pinchar en el link, va una pagina llamada descargar.php. Esa pagina comprueba tambien otra serie de datos y mediante unos header (modifico content xtype, etc ... ) y los fopen y fgets comienza la descarga del archivo hacia el cliente.

La descarga se realiza desde una direccion del tipo http://62.135.25.240/archivos/video/ESTE_VIDEO.mpg, es decir, en el directorio /video/ estan todos los ficheros que se podrian descargar (la pagina descargar.php no esta en el mismo directorio que los archivos, sino en uno superior aunque no es importante). Lo que si importa es que hay un directorio donde solo hay mp3, mpg, avi, etc ..

Esa direccion desde la que se descarga el fichero puede llegarse a ver por el cliente (si es medianamente avispado) y despues podria teclear directamente la direccion en el navegador y descargarse cualquier otro video si conociera su nombre (por ej, luego escribe http://62.135.25.240/archivos/video/OTRO_VIDEO.mpg y se lo descargaria sin haberlo pagado).

Problemas:

- no puedo proteger el directorio donde estan los archivos a descargar pues entonces apareceria la ventanita para meter usuario y contraseña, lo cual jorobaria al cliente. Y si lo doy esos datos los podria usar igualmente para descargarse otros videos.

- no puedo usar hotlink con el .htaccess en el directorio de los archivos pues windows media player no soporta el HTTP_REFERER, y aunque he intentado permitir SOLO a descargar.php acceso al directorio de los archivos, no funciona (he probado 7 formas distintas segun se indica en http://www.htmlbasix.com/disablehotlinking.shtml y o se descarga siempre - es decir tanto a traves de descargar.php como escribiendo directamente una url de un video - o no se descarga nunca).

Es decir, lo que busco es la forma de proteger el directorio de los archivos para que cuando se escriba directamente la direccion de un archivo en el navegador se deniege el acceso PERO que a traves de un fichero llave(descargar.php) externo a ese directorio se puede acceder y descargar lo que el cleinte pago y ha solicitado.

Es posible leer el fichero y poderlo descargar a pesar de proteger el directorio o hay alguna otra "formula".

Trate de sacar el directorio de los archivos fuera de la web pero el $DOCUMENT_ROOT es /usr/local/apache/htdocs, y deduzco que hay algun alias pues si ejecuto un fichero en raiz el SCRIPT_FILENAME es /home/nombre/public_html/index.php que equivale al http://65.58.125.58/~nombre/index.php. Y no encuentro la relacion.

Disculpas por lo largo de la consulta y agradecimientos por adelantado.
Un saludo a [email protected]
  #2 (permalink)  
Antiguo 13/12/2004, 05:26
 
Fecha de Ingreso: diciembre-2003
Mensajes: 213
Antigüedad: 14 años
Puntos: 0
No se es una idea, pero no se si te resultara. Yo una vez que el usuario a metido los datos y demas, cuando ya sabes que todo es correcto le metería una cookie en su disco.
Asi a lo mejor a la hora de entregarle el archivo a lo mejor puedes recuperar esa cookie y si esta correcta se lo entregas y si no es correcta o no existe la cookie le mandas al carajo.

No se, es una idea, pero no se realmente si es buena o si te podrá funcionar.
  #3 (permalink)  
Antiguo 13/12/2004, 05:27
 
Fecha de Ingreso: diciembre-2003
Mensajes: 213
Antigüedad: 14 años
Puntos: 0
ah se me olvidaba, si te sirve esto procura eliminar la cookie en cuanto le entregues el archivo, porque si no podrá entrar cuantas veces quiera con solo pagar una vez.
  #4 (permalink)  
Antiguo 13/12/2004, 06:23
 
Fecha de Ingreso: diciembre-2004
Mensajes: 2
Antigüedad: 13 años
Puntos: 0
no con cookies

Gracias por la respuesta, pero las cookies no son la solucion. El descargar a traves de una puerta (descargar.php) esta solucionado. El problema es cuando alguien teclea directamente una direccion url en el navegador. Ahi, no sirven las cookies, pues no hay codigo por medio.
Un saludo
  #5 (permalink)  
Antiguo 13/12/2004, 06:50
 
Fecha de Ingreso: diciembre-2003
Mensajes: 213
Antigüedad: 14 años
Puntos: 0
Huy es verdad. Perdona que no lo habia entendido bien.
  #6 (permalink)  
Antiguo 20/12/2005, 13:54
Avatar de pituzo  
Fecha de Ingreso: octubre-2004
Ubicación: Malaga
Mensajes: 34
Antigüedad: 13 años, 1 mes
Puntos: 0
Tengo el mismo problema que tú y estaba esperanzado leyendo este topic pensando que encontraría solución...

No me puedo creer que eso no tenga solución!!

Venga, ánimo, alguna cabeza pensante experta en PHP debe encontrar la manera de hacerlo!!

A mi solo se me ocurre (por proponer alguna manera de solucionar...) poner los archivos en un directorio por encima del público (inaccesible por web) y en el momento que se solicite el fichero ubicarlo en un directorio accesible y borrarlo cuando el usuario ya lo haya descargado. El cómo hacer esto operativo ya corre de tu cuenta. Siento no ser más útil, pero estoy en las mismas que tú...

Por cierto, si encontraste la manera de solucionarlo avisa!
  #7 (permalink)  
Antiguo 20/12/2005, 14:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
A mi solo se me ocurre (por proponer alguna manera de solucionar...) poner los archivos en un directorio por encima del público (inaccesible por web)
Sería eso lo que se hace .. pero nada de "copiar" el archivo temporalmente a algún sitio .. sino tu script PHP sería el que entregue el archivo leyendolo por ruta absoluta (/var/home/sitio.com/archivos .. siendo el "public_html" en: /var/home/sitio.com/public_html donde apunta el "DOcumentRoot" y quedaría disponible todo lo que ahí aparezca por http://www.sitio.com/nose.tal ...)

Nó sé si tu tienes la misma situación que el amigo manuel_mad .. con dos sitios y ejecutables (scripts.php) en uno .. y archivos en otro .. Pero, si quieres implementar esta "comunicación" segura entre ambos .. deberías correr un script para descargas en el servidor que contenga los archivos para controlar autentificación y demás.

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 21:42.