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

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

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

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

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

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

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

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

感谢所有帮助/评论!

【问题讨论】:

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

标签: php apache download file-permissions


【解决方案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'] 以允许或拒绝访问。
      猜你喜欢
      • 2013-07-17
      • 2012-05-30
      • 2016-03-06
      • 2010-09-28
      • 1970-01-01
      • 2011-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多