2010-03-10 50 views
4

这是一个常见问题,解决了很多次,但由于某种原因,我找不到正确的信息。如何从公开动态密码保护文件(图像,视频,zip),并只允许访问会员?

一些限制和要求:

  • 技术LAMP堆栈。
  • 精细控制哪些文件可以访问。
  • 没有使用htpasswd文件进行基本身份验证,我想提供一个自定义登录前端。
  • 应该能够安全地保护和服务的大视频文件

如何所有这些网站保护自己的文件从公共不使用基本身份验证?

谢谢!

一个类似的问题:Performance-oriented way to protect files on PHP level?

回答

6

您将媒体文件的任何请求通常重定向到一个PHP脚本。 PHP脚本执行登录验证,并在成功时从受保护的位置加载所请求的媒体文件,并将其传递到浏览器,例如使用fpassthru()fread()

您可以使用一组mod_rewrite指令设定了一个非常优雅的解决方案,例如改写

www.example.com/media/music.mp3 

内部到

www.example.com/media/index.php?file=music.mp3 

的方法是不便宜,因为PHP解释器来每次下载都会启动,并传递文件的每个字节。为了讨论可能的选择,我在几个月前问了一个问题:Performance-oriented way to protect files on PHP level

+1

就是这么做的。注意:受保护的位置是您的apache(或选择的Web服务器)文档根目录之外的文件夹,因此不能公开访问。您将只能使用下载脚本访问文件(顺便说一句,您必须确保下载脚本检查其输入以防止恶意用户下载其他文件 - 如脚本源)。 – wimvds 2010-03-10 12:53:00

+0

好吧,这确实是我想到的方法,但我也有我对性能的担忧,尤其是当我来到(流媒体?)视频时,我不确定它甚至有可能...将需要很多测试...谢啦! ;-) – 2010-03-10 13:24:38

+0

我看到你的问题与我的非常相似,并没有偶然发现。问题已更新。 – 2010-03-10 13:25:48