【问题标题】:PHP How can I block direct URL files accessPHP 如何阻止直接 URL 文件访问
【发布时间】:2014-10-12 15:23:43
【问题描述】:

我目前正在创建一个用 PHP 编写的项目,并且有很多文件,例如类、过程等,我不希望任何人可以直接从 URL 访问。 我考虑过使用表单的 .htaccess 设置:

Order Deny,Allow
Deny from all

我想知道这样的设置是否能解决问题,我也想知道是否有其他方法可以使用。谢谢。

【问题讨论】:

    标签: .htaccess access-control


    【解决方案1】:

    您要查找的内容需要一个所谓的“路由器”和将所有请求重定向到一个索引的规则,例如“入口”文件。

    然后您必须将路线分成几个部分,构建逻辑并将其与可能存储在路线文件中的有效路线列表进行比较。

    这种行为通常与使用 MVC 模式的 PHP 框架配对。

    你应该在谷歌上搜索“php route mvc”,你会找到如何构建这些的教程。

    不过,一个好的开始是如上所述将所有请求重定向到一个特定文件。

    您可以使用 htaccess,它看起来像这样:

    RewriteEngine On
    Options -Indexes
    
    RewriteRule .* index.php [L]
    

    这将为每个 url 调用前面的 index.php 文件,无论它是否指向现有文件。

    然后,您的索引文件应包含一个逻辑,以使用诸如 $_SERVER["REQUEST_URI"] 之类的服务器变量提取您的 URL 并对其进行分析,然后在内部重定向或更好地包含您希望通过此 url 显示的内容。

    【讨论】:

      【解决方案2】:

      例如,对我来说,最好的方法是使用您所说的 .htaccess 或使用 FileZilla。您可以更改对文件/文件夹的访问权限。

      或者您可以为您设置一个$_SESSION['access']

      不要忘记通知您不希望通过 robots.txt 附加这些文件

      Disallow: /your_folder/
      Disallow: /your_file
      

      【讨论】:

        【解决方案3】:

        您可以使用 .htaccess 阻止对某些文件的访问

        <Files ~ "\.(ext)$">
          Order allow,deny
          Deny from all
        </Files>
        

        希望它有效

        我担心通过阻止直接访问文件可能会导致意想不到的结果。

        【讨论】:

        • 基本上这很好,但是网络服务器不会决定您是尝试使用外部 url 包含文件还是有人手动输入该页面,所以这会给您带来麻烦......
        【解决方案4】:

        最好将它们从您的网络服务器的公共根目录中移出,而是使用公共中的专用加载器类引用它们(并且只包含来自 ../ 等)

        将敏感的控制器和文件存储在 Web 根目录中不是明智之举。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-03-04
          • 2013-04-02
          • 2016-10-24
          • 1970-01-01
          • 2012-05-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多