PHP/Apache 拒绝用户访问文件夹但不访问脚本

Posted

技术标签:

【中文标题】PHP/Apache 拒绝用户访问文件夹但不访问脚本【英文标题】:PHP/Apache Deny folder access to user but not to script 【发布时间】:2011-02-09 16:55:35 【问题描述】:

所以我有这个 php web 应用程序,我的一个文件夹包含一些可以下载的文件。

我有一个修改标题的下载脚本,以便始终提供下载链接。 (而不是显示图片,例如,当您单击链接时,会弹出一个下载框)

现在,如果您输入如下网址:http://www.mywebsite.com/content/ 您将获得所有可下载文件的列表,当然,您可以直接下载所有文件,而无需通过网站界面。

我个人认为这不是问题,因为我经常使用downthemall或其他下载工具,这种访问方式非常节省时间......

但我的公司当然不这么认为:-p 他们希望人们使用界面来查看广告...

他们是否可以通过受保护的 .htaccess 将文件夹访问权限保留给我的下载脚本,但拒绝用户访问...?

我希望我是有道理的,你知道我的意思:)

感谢所有帮助/评论!

【问题讨论】:

首先,您必须了解不是单个 apache 指令 会影响脚本访问。所以,你的问题没有多大意义。您可以使用的任何指令都可以。 【参考方案1】:

是的,这是正确的。 .access 文件阻止用户访问,但对本地服务器脚本没有影响。

【讨论】:

【参考方案2】:

将文件夹移出网络服务器的根目录,这样 apache 就不会从该目录中服务器文件。如果 apache/http 用户可以读取该文件夹中的文件,您仍然可以包含该文件,但您的站点用户将无法从任何 url 访问它。

【讨论】:

我之前尝试过,但是当使用修改http头的下载脚本时,它不起作用...我的文件夹权限是正确的但是... 嘿@Piero,你在“修改http标头的脚本”下到底是什么意思?你听说过“调试”这个词吗? 它有效,我一直这样做。您的脚本可以修复。 (@Col:他的意思是用户应该通过它下载文件的脚本。它添加标题以强制下载。)【参考方案3】:
Deny from all

.htaccess 或移动文件根目录上方的文件

【讨论】:

【参考方案4】:

您可以创建一个 .htaccess 文件并输入 Options -Indexes 这将禁用目录中的文件列表。

如果您还需要来自您网站的流量,您需要创建一个文件说... index.php 使用检查$_SERVER['HTTP_REFERER'] 的代码来查看流量是否来自您的网站。

编辑

哦,我忘了你实际上可以在 .htaccess 中修复它:

Options -Indexes
RewriteEngine On
RewriteCond %HTTP_REFERER !^http://your-host.com/.*$ [NC]
RewriteRule ^.* /403-page [L,R]

这将完成我建议的脚本的所有工作,因此您将不再需要它。

【讨论】:

听起来不错,我会试一试,如果它达到了我的要求,请告诉你! referer check 总是会排斥一些公平的用户 这不会阻止人们直接下载文件,只是列出目录的内容。 @Col。 Shrapnel:当然,我也永远不会选择那个解决方案,但看起来 Piero 的老板/经理/......不过就是想要那个。 @Scott Saunders:这就是为什么我暗示 index.php 检查 $_SERVER['HTTP_REFERER'] 以允许或拒绝访问。

以上是关于PHP/Apache 拒绝用户访问文件夹但不访问脚本的主要内容,如果未能解决你的问题,请参考以下文章

用户“root”的访问被拒绝。 PHP/MYSQL/XAMPP

用户'root'@'localhost'的访问被拒绝(使用密码:YES)

S3 存储桶的 IAM 组策略:拒绝文件夹但不拒绝文件

文件拒绝访问

“对路径的访问被拒绝.” 是怎么回事

“对路径的访问被拒绝.” 是怎么回事