【问题标题】:Allowing only localhost to access a folder where all inclusive php files exist仅允许 localhost 访问存在所有包含 php 文件的文件夹
【发布时间】:2011-06-07 11:15:01
【问题描述】:

我们都有像 'connect_db.php' 这样的 php 文件,仅用于包含目的。

假设我在“www/html/INC”中有所有包含的 .php 文件

我有 index.php

我希望每个人都可以从浏览器访问 index.php,但我想阻止用户直接访问“www/html/INC”文件夹。 (例如,当在浏览器中输入 'www.domain.com/INC/' -> 404 错误等)

我如何做到这一点?

最好使用根目录下的.htaccess文件。

【问题讨论】:

    标签: php .htaccess


    【解决方案1】:

    类似

    <Directory /INC>
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>
    

    应该可以。

    【讨论】:

    • @user706087 在同一个文件夹中尝试忽略&lt;Directory&gt; 部分。
    【解决方案2】:

    我如何做到这一点?

    不要。根据my previous answer,将connect_db.php 放在/www/ 中要安全得多,而不是放在/www/html/INC/ 中。如果您打算这样做,那么您将使用 /www/html/.htaccess:

    <Directory "/www/html/INC">
       order allow,deny
       deny from all
    </Directory>
    

    【讨论】:

    • 谢谢,但如果我将文件放在高于文档根目录的位置,那么如何通过alsolute 目录路径包含 connect_db.php 文件?我使用了包括 $_SERVER['DOCUMENT_ROOT']."/INC/connect_db.php";之前。
    • 我也应该把图片放在高于根目录的位置吗?如果那么我如何使用 $_SERVER['SERVER_NAME'] 或其他链接它?
    • 没有。你可以,但我不会。它用于关键文件。要包含该文件,请使用 include $_SERVER['DOCUMENT_ROOT'] 。 '/../connect_db.php';
    • 您可以包含 PHP 文件,也可以使用绝对路径 (/var/www/...)。这是你的选择。
    • @bksi 当然,我的意思是您不应该将文件放在网络可访问的目录中。然而,为了代码的可移植性,我会让包含相对于当前目录而不是使用静态绝对路径。
    【解决方案3】:

    Google 搜索把我带到了这里,所以我想我今天会在apache docs 中发布我发现的内容。我不确定它适用于哪些版本的 apache,但请搜索您的版本以进行验证。

    现在您可以使用Require local。我建议将 .htaccess 放在要限制仅使用该行访问的文件夹中。但是,如果您必须在根目录中执行此操作,则如下所示:

    <Directory "www/html/INC">
        Require local
    </Directory>
    

    【讨论】:

      【解决方案4】:

      从 Apache 2.4 开始,Require 是可行的方法。

      例如以下内容拒绝除localhost 之外的任何人访问/www/html/INC 目录:

      <Directory "/www/html/INC">
          Require all granted
          Require ip 127.0.0.1
      </Directory>
      

      【讨论】:

        【解决方案5】:

        connect_db.php 移动到目录树中比公共目录更高的级别。
        还有所有脚本,它们也不应该是可执行的。

        /home/user/project/incs/ -- 这里是您的包容性脚本
        /home/user/project/www/html -- 这里是您的index.php 和其他可执行脚本。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-15
          • 2012-05-26
          • 1970-01-01
          相关资源
          最近更新 更多