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