2010-01-08 100 views
0

我正在使用PHP 的header函数将文件发送到浏览器并显示一些小代码。它的工作很好 ,我有它,所以如果任何人请求与除我的网站 以外的引荐人它首先重定向到一个页面。 不幸的是,它不与互联网下载管理器。如何保护我的网站免受瘙痒?

我想知道的是rabidshare和4shared网站如何做到这一点。

+1

我不明白你提到的网站是做什么的,你想效仿。你是否试图阻止盗链或是其他事情?我会虽然有东西(会话cookie?)传递给下载管理器,但我不知道。有几种方法可以解决这个问题,但这取决于你想要什么以及管理人员的工作方式。 – Draemon 2010-01-08 18:21:06

回答

2

您可以使用会话来确保有效用户正在请求下载。

2

并非所有可以看到网页的浏览器/软件都会将Referer发送到您的服务器。有些网站会制作浏览器“指纹”,通常是哈希值,可能是Referer,User-Agent和其他一些头文件串在一起,为该用户创建唯一标识符,从而限制访问,如您所描述的。

当然,我可能已经完全错过了你的帖子的要点!

2

典型的设计模式是使用前端控制器为所有请求提供一个入口点。通过使用前端控制器,您可以精确控制客户所看到的内容。

您可以在Apache中对此进行配置,以便所有请求都通过一个文件(我已经完成了一段时间,因为我现在专注于Java)。我认为你需要查看Apache的pathinfo文档。

这可能需要对其余应用程序代码进行重大更改。但是,从长远来看,代码将更加安全和可维护。

我已经通过这种模式提供图像和其他二进制文件。这使我能够在实际发送文件之前轻松验证用户是否已通过身份验证。混淆不是安全的,所以如果你依赖混淆你的URL,攻击者可能会延迟入侵,但这只是时间问题。

沃尔特

1

的问题可能是,通过PHP脚本发送文件(你提到的头)不支持在特定位置开始文件下载。下载管理器使用此功能使用多个并发线程下载文件(假设服务器以特定速度提供一个线程)。

对于小型项目,我建议制作带有唯一文件名的文件副本,以便下载时间并将用户重定向到此复制的文件。这样他就可以获得完整的服务器下载功能,而且它也不会像php那样加载处理器。缺点 - 需要更多的磁盘空间,需要清理下载目录。