我正在使用PHP的header
函数
使用一些小代码将文件发送到浏览器。它运作良好
我有它,所以如果任何人请求与我的网站以外的referer
它首先重定向到一个页面。
不幸的是,它没有与互联网下载管理器合作。
我想知道的是rabidshare和4shared网站是如何做到这一点的。
答案 0 :(得分:2)
您可以使用会话来确保有效用户请求下载。
答案 1 :(得分:2)
并非所有可以看到网页的浏览器/软件都会将Referer发送到您的服务器。有些网站会制作一个浏览器“指纹”,通常是散列的,可能是Referer,User-Agent和其他几个标题串在一起,为该用户制作一个唯一的标识符,从而限制你所描述的访问。
当然,我可能完全错过了你的帖子!
答案 2 :(得分:2)
典型的设计模式是使用前端控制器为所有请求提供单个入口点。通过使用前端控制器,您可以准确控制客户端看到的内容。
您可以在Apache中对此进行配置,以便所有请求都通过单个文件(自从我完成此操作已经有一段时间了,因为我现在专注于Java)。我想你需要查看Apache的pathinfo文档。
这可能需要对其余应用程序代码进行重大更改。但是,从长远来看,代码将更加安全和可维护。
我通过这种模式提供了图像和其他二进制文件。这使我能够在实际发送文件之前轻松验证用户是否经过身份验证。混淆不是安全性,因此如果您依赖于混淆您的URL,攻击者可能会延迟进入,但这只是时间问题。
沃尔特
答案 3 :(得分:1)
问题可能是通过php脚本发送文件(带有你提到的标题)不支持在特定位置启动文件下载。下载管理器使用此功能使用多个同时线程下载文件(假设服务器以特定速度提供一个线程)。
对于小项目,我建议只为下载时间制作具有唯一文件名的文件副本,并将用户重定向到此复制文件。这样他就可以获得完整的服务器下载功能,并且它也不像php那样加载处理器。缺点 - 需要更多磁盘空间并需要清理下载目录。