当文档不是我的 Web 应用程序时,我需要最好的方法来防止对文档文件的任何访问,例如,我需要对搜索引擎或公共用户隐藏一些文件,并且只有私人用户可以访问并下载它们。
我想将文件保存在文件系统中而不是数据库中,以免增加数据库使用率。
当文档不是我的 Web 应用程序时,我需要最好的方法来防止对文档文件的任何访问,例如,我需要对搜索引擎或公共用户隐藏一些文件,并且只有私人用户可以访问并下载它们。
我想将文件保存在文件系统中而不是数据库中,以免增加数据库使用率。
您可以将文件存储在文件系统中的一个无法通过 URL 访问的目录中(例如您的根 Web 目录的同级目录)。这将阻止直接访问。
然后,编写一个 PHP 脚本,当查询给定文件时,它将检查用户是否可以访问该文件,并将其发送readfile
(连同header
内容类型和内容处置)。
当您说“私人用户”时,我只是假设这意味着这些用户以某种方式进行了身份验证。您可以将这些文件存储在 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 之外创建该目录,并将权限设置为您的脚本运行的同一用户(nobody,通常在 apache 下)。
Robots.txt是一种阻止/允许某些 HTTP 用户代理的方法。虽然这不是最安全的方式。您可以使用基本身份验证来让您的 Web 应用程序登录。