【问题标题】:.htaccess to restrict access to folder.htaccess 限制对文件夹的访问
【发布时间】:2011-01-06 00:03:42
【问题描述】:

我有一个继承(包括)另一个 PHP 文件的 php 文件。所有继承的文件都位于一个名为“includes”的文件夹中。我希望能够限制对该文件夹的任何直接访问。只有服务器中的 PHP 文件可以与“includes”文件夹中的文件通信。如何使用 .htaccess 来实现这样的目标?

仅供参考,我使用了以下代码,但它不起作用

Order deny,allow
deny from all

任何帮助将不胜感激

【问题讨论】:

  • 如果这不起作用,可能是 httpd.conf 设置为不读取 .htaccess 文件。例如: AllowOverride None 更改为其他内容(例如 AllowOverride All)并重新启动 Web 服务器。

标签: .htaccess


【解决方案1】:

如果您没有选择将“includes”文件夹实际移动到文档根区域之外,并使用 include_path(即您无法从 Web 访问它),则输入

deny from all

在该目录中的 .htaccess 目录中。

但是,替代方法是使用 DEFINES 指令仅允许特定授权文件访问那些包含程序。例如,把

<?php defined('ACCESS_ALLOWED') or die('Restricted Access'); ?>

在包含文件的顶部,然后放

<?php define('ACCESS_ALLOWED', 1); ?>

在允许包含这些文件的程序中。

这将防止对那些包含文件的临时 GET 运行它们,并且适用于任何 Web 服务器,而不仅仅是那些支持 htaccess 文件的服务器。

【讨论】:

    【解决方案2】:

    在您的 include/.htaccess 中:

    Order deny,allow
    deny from all
    

    【讨论】:

      【解决方案3】:

      您实际上可以只使用 index.php 并使用 header() 传递 404 标头:

      header('HTTP/1.1 404 Not Found', 404);
      

      IMO,这比 403 更好,因为它就像文件夹不存在一样。至于包含文件,将此行放在主文件的第一行include/require之上:

      define('INCLUDED', true);
      

      并且在包含目录中的每个文件上,将其放在最顶部。

      if (!defined(INCLUDED)) {
          header('HTTP/1.1 404 Not Found', 404);
      }
      

      【讨论】:

      • 你可能还想调用 exit();在标头之后,因为页面可能仍会执行。
      【解决方案4】:

      您可以在 htaccess 或 server.config contex 中使用以下指令拒绝对文件夹的直接访问:

      基于 Mod-alias 的解决方案

      Redirect 403 ^/folder/.+$
      

      这会将 /folder/ 的所有文件和目录重定向到 403 禁止错误页面。

      Mod-rewrite 基础解决方案:

      RewriteEngine on
      
      RewriteRule ^/?folder/.+$ - [F]
      

      【讨论】:

        【解决方案5】:

        根据您可能需要使用的更高级别设置的其他选项:

        Satisfy all
        Order deny,allow
        Deny from all
        

        我在上层目录定义基本身份验证时遇到了这个问题,包括:

        Satisfy any
        

        这阻止了我的拒绝生效,因为用户已经过身份验证。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-12-07
          • 2012-03-03
          • 1970-01-01
          • 2017-09-17
          • 2016-05-05
          • 1970-01-01
          • 2017-08-29
          相关资源
          最近更新 更多