如何使用php密码保护流媒体视频

7 php authentication streaming quicktime login

使用php/.htaccess密码保护快速流媒体视频的最佳方法是什么?它们使用rtsp进行流式传输,但如果需要,我可以使用其他格式.

我知道如何使用php进行身份验证,但我不确定如何设置身份验证以保护流文件URL,以便用户不能只复制URL并共享它.

或者我是否过度思考这个并且我可以使用普通的身份验证方案并将文件放在受保护的目录中?

小智 6

nginx 和 lighttpd Web 服务器都有 X-Send-File 标头,您可以从 PHP 返回。因此,您可以在 PHP 中进行检查,然后有条件地将文件服务器输出。

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

Lighttpd 还有一个名为mod_secure_download的简洁模块,它允许您以编程方式生成一个仅在短时间内有效的 URL。

Nginx 以及可能的 lighttpd 允许您限制下载速度,因此您不会以比消耗速度更快的速度发送流数据。

无论哪种方式,您都希望使用 Web 服务器来提供文件。通过 PHP 为它们提供服务是可能的,但速度很慢。


cmp*_*ken 0

首先,欺骗引用者非常容易。此信息存储在用户的浏览器中,因此用户可以简单地远程登录到您的服务器并提供与您的域匹配的他自己的引荐来源网址。

\n\n

您可以尝试以下几件事:

\n\n

首先,更安全,但仍然容易被欺骗。mod_rewrite 提供了检查 cookie 的功能。您可以做的是当用户访问您的网站时设置一个包含一些模糊数据的 cookie。然后,您可以将 RerwriteCond 修改为如下所示:

\n\n
RewriteEngine On\nRewriteCond %{HTTP_REFERER} !^$\nRewriteCond %{HTTP_COOKIE} obscurename=obscurevalue [NC]\nRewriteCond %{HTTP_REFERER} !^http://(www\\.)?yourdomain.com/.*$ [NC]\nRewriteRule \\.(asx\xc2\xa6ASX)$ http://www.yourdomain.com/images/leech.gif [R,L]\n
Run Code Online (Sandbox Code Playgroud)\n\n

另一种更好的技术涉及使用 PHP 和 mime 类型。我不确定这会在多大程度上支持流媒体内容,但我认为它会起作用。您可以做的就是让所有视频链接都指向 .php 文件(查询字符串将确定选择了哪个视频)。然后,当用户尝试访问此链接时,您将执行如下操作:

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

根据我的阅读,大多数服务器都知道哪些 mime 类型是流 mime 类型,因此浏览器应该能够弄清楚如何正确处理流文件。

\n