如何通过我的Web应用程序限制通过浏览器下载文件系统

时间:2009-12-30 09:30:36

标签: php web-applications filesystems document-library

当我不是我的网络应用程序时,我需要最好的方法来阻止对doc文件的任何访问,例如,我需要从搜索引擎或公共用户隐藏一些文件,只有私人用户可以访问和下载它们。< / p>

我想将文件保存在文件系统中,而不是保存在数据库中,以免增加数据库使用量。

3 个答案:

答案 0 :(得分:3)

您可以将文件存储在文件系统中,无法通过URL(例如根网站目录的兄弟)访问的目录中。这将阻止直接访问。

然后,编写一个PHP脚本,当查询给定文件时,将检查用户是否可以访问该文件,并使用readfile(以及header发送内容类型和内容处理)。

答案 1 :(得分:2)

当你说“私人用户”时,我只是假设这意味着这些用户以某种方式进行了身份验证。您可以将这些文件存储在Web目录之外,然后通过PHP / Perl / Your_Favorite_Programming_language提供它们。

链接可能会导致脚本检查该用户是否经过身份验证,如果是,则通过脚本提供该文件。

在php中,在对用户进行身份验证后,您可以使用:

header('Content-disposition: attachment; filename=movie.mpg');
header('Content-type: video/mpeg');
readfile('/full/path/to/your/files/movie.mpg');

请记住在webroot之外创建该目录,并将权限设置为脚本运行的同一用户(无人,通常在apache下)。

答案 2 :(得分:0)

Robots.txt是一种阻止/允许某些HTTP用户代理的方法。但这并不是最安全的方式。您可以使用基本身份验证让您的Web应用程序登录。