【发布时间】:2016-07-31 07:57:23
【问题描述】:
我想让特定目录中的文件只能供php访问,具体情况是,我有一个文件夹,里面有一些子文件夹,每个子文件夹都包含很多文件(可以是每种类型的文件,比如图像、代码、可执行文件等)。现在我构建了一个能够下载文件的脚本,它可以工作,但也有可能只去server.com/folder/subfolder/img.jpg 来查看图像。这是我不想允许的。
有什么办法可以做到吗?
PS:我正在运行带有 apache2 和 PHP7 的 Ubuntu 14.04 服务器。
编辑:问题可能与链接的问题重复,但没有答案对我有用,.htaccess 不会改变任何东西,文件夹应该保持原位。
【问题讨论】:
-
你尝试了错误的方法。文件系统内部权限处理不解决了类似的问题,这是不可能的。相反,您使用“路由器脚本”来处理对任何此类文件的请求,而文件本身无法通过直接 http 请求完全访问。它们存储在已发布的文件树部分之外。路由脚本可以使用您想要授权请求的任何策略,然后通过首先发送适当的 http 标头然后发送文件内容本身来“分发”文件。
-
@arkascha 为什么 .htaccess 文件没有“拒绝所有”的工作呢?
-
当然可以,但您必须再次对某些文件实施例外。但我不会认为这是一个安全或优雅的解决方案。它将您的应用程序逻辑分布在您的设置中的不同级别,并要求所有组件完美地协同工作。如果没有,您有安全或数据泄露。
.htaccess样式文件是出了名的容易出错,难以调试,而且它们确实减慢了 http 服务器的速度。而在路由脚本中,您可以使用脚本语言提供的所有灵活性。记录、修改、一对多方法…… -
@arkascha 所以你认为我可以将包含子文件夹和文件的文件夹移动到浏览器无法访问的另一个文件夹中(所以在
/var而不是/var/www?
标签: php apache2 privileges access-control