example con auth php authentication login streaming quicktime

con - php send auth header



Cómo proteger con contraseña la transmisión de videos con php (5)

En la solución de Jacco, ¿es posible inspeccionar los encabezados, encontrar la URL del archivo y descargarlo sin autenticación?

Una posible solución que se me ocurre sería colocar los archivos en un lugar que sea inaccesible para cualquier persona que no sea el navegador, es decir, utilizando un .htaccess denegar todo. Funcionaría eso?

¿Cuál es la mejor manera de proteger con contraseña los videos de transmisión rápida usando php / .htaccess? Se transmiten mediante rtsp, pero puedo usar otros formatos si es necesario.

Sé cómo hacer la autenticación con php, pero no estoy seguro de cómo configurar la autenticación para que proteja las URL de los archivos de transmisión de manera que el usuario no pueda copiar la URL y compartirla.

¿O estoy pensando demasiado y puedo usar un esquema de autenticación normal y colocar los archivos en un directorio protegido?


En primer lugar, es muy fácil burlar a un árbitro. Esta información se almacena en el navegador del usuario, por lo que un usuario puede simplemente ingresar a su servidor y proporcionar su propio referenciador que coincida con su dominio.

Un par de cosas que podrías probar:

Primero, más seguro, pero aún así, falso. mod_rewrite proporciona la capacidad de verificar las cookies. Lo que podría hacer es establecer una cookie cuando el usuario visite su sitio web que contenga datos poco claros. Entonces, podrías modificar tu RerwriteCond a algo como esto:

RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_COOKIE} obscurename=obscurevalue [NC] RewriteCond %{HTTP_REFERER} !^http://(www/.)?yourdomain.com/.*$ [NC] RewriteRule /.(asx¦ASX)$ http://www.yourdomain.com/images/leech.gif [R,L]

Otra técnica mejor implicaría trabajar con PHP y mime-types. No estoy seguro de hasta qué punto esto sería compatible con la transmisión de contenido, pero supongo que funcionará. Lo que puede hacer es hacer que todos sus enlaces de video apunten a un archivo .php (la cadena de consulta determinará qué video se ha seleccionado). Luego, cuando un usuario intenta visitar este enlace, puede hacer algo como esto:

<?php // You could also check some sort of session variable // that is set when the user visits another part of your // site if(!isLoggedIn()){ header("Location: errorPage.htm"); exit; }else{ // Get the name of the file specified $file = get_file_name($_GET[''fileID'']); // Specify the proper mime-type for the data you''re sending // (this may have to change, depending on your situation) header("Content-type: video/vnd.rn-realvideo"); // Read the file and output it to the browser readfile($file); } ?>

Según lo que leí, la mayoría de los servidores saben qué tipos de mime están transmitiendo tipos de mime, por lo que el navegador debería poder entender cómo manejar el archivo de transmisión de manera adecuada.


Es posible que desee echar un vistazo a: mod_xsendfile (para apache)

Le permite redirigir internamente a un archivo.

Para que pueda apuntar su enlace de descarga a checkCredentials.php

<?php if ( isAuthorised($_POST[''user''], $_POST[''pass'']) ) { header("X-Sendfile: $somefile"); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; file=/"$somefile/""); exit(0); } else { show403(''bad credentials''); } ?>

Este módulo también está disponible para otros servidores web. Si mal no recuerdo, la idea viene originalmente de lighttpd, pero, como dice Josh, también está disponible para nginx.


Intenta usar el servicio Amazon S3, tiene sus peculiaridades, pero tiene sentido una vez que te familiarices con él.

Hay ganchos en su API para obtener temporalmente URL que están activas durante el tiempo especificado, por lo que puede mostrar la url libremente al visitante porque no funcionará 10 minutos más tarde.

Es casi trivial con php (alrededor de 15 líneas de código), hay muchos ejemplos en sus foros, por lo que no es necesario ir desde cero y leer la documentación completa sobre cómo lograr esto.

Qué tipo de autorización hará antes de generar y mostrar enlaces depende de usted.

También puede hacer que parezca que se sirve desde su dominio como video.tudominio.com en lugar de las URL s3 estándar.

Por último, es barato: pagamos alrededor de 2 dólares por el mes de prueba e implementación cuando subí 8 GB y lo descargué 3 veces por completo y la descarga se inicializó unas 100 veces. La persona para la que estaba haciendo esto está tan satisfecho por el precio que quiere mover todos sus medios descargables a s3.

Ahora, leyendo todo lo que escribí, parece comercial / spam, pero estoy tan satisfecho con el servicio porque antes codifiqué todo para los archivos de audio, y me llevó varios días hasta que todo funcionó bien y me llevó un par de horas implementarlo (principalmente familiarizado con el servicio).


Los servidores web nginx y lighttpd tienen encabezados X-Send-File que puede devolver desde PHP. Entonces puedes hacer tus cheques en PHP y luego server de forma condicional el archivo.

if (check_user_can_access()){ header(''X-sendfile: /path/to/file''); } else { header(''HTTP/1.1 403 Fail!''); }

Lighttpd también tiene un módulo ordenado llamado mod_secure_download que le permite generar programáticamente una URL que solo será válida por un corto período de tiempo.

Nginx, y posiblemente lighttpd, le permiten limitar la velocidad de descarga, por lo que no está enviando datos de transmisión más rápido de lo que puede consumirse.

De cualquier forma, quiere usar su servidor web para servir archivos. Servirlos a través de PHP es posible, pero lento.