【问题标题】:Protect PHP from Invalid Referrer via .HTACCESS?通过 .HTACCESS 保护 PHP 免受无效引用者的影响?
【发布时间】:2012-03-03 19:38:31
【问题描述】:

我的情况是,我有文件包含,但我不希望其他人进入“包含”目录并通过浏览器单独查看页面。

我非常熟悉如何通过 PHP 文件本身来处理它,但这次我想使用 .htaccess 来防止它。

那么如何配置 .htaccess 以防止用户不是来自某个引用者查看“includes”文件夹中的 PHP 文件?

【问题讨论】:

  • 这对我来说没有意义:当您在 PHP 中include() 一个文件时,它具有与其包含脚本完全相同的引荐来源网址。我错过了重点吗?
  • 你很明白什么是referrer吗?

标签: php .htaccess protection referrer


【解决方案1】:

.htaccess 可以,但只是建议一个替代方案 - 为什么不将包含目录移到 webroot 之外呢?您的脚本仍然可以访问它,并且无需将 apache 配置为拒绝访问。

【讨论】:

  • 谢谢,我从来没想过这样做。
  • @ShedoSurashu 这在框架中很常见,其中整个框架和应用程序都在 webroot 之外。根目录中唯一的文件是资源(images/javascript/css)和引导应用程序的单个文件。
【解决方案2】:

将 .htaccess 文件放在您不想被查看的目录中,然后将其放在那里:

order allow, deny
deny from all

这是简单的阻止所有方法。有关如何通过推荐人阻止的更多信息可以找到here。 希望这会有所帮助。

【讨论】:

    【解决方案3】:

    由于许多网络托管解决方案明确限制您在 public_html(或等效)层次结构中工作。所以我使用了一个简单的约定:如果我不希望文件或目录是私有的——不能通过 URI 访问——那么我在其名称前加上“_”或“.” ",例如我的 PHP 包含目录名为 "_includes"。

    我在我的 .htaccess 文件中使用此模式来强制执行此操作:

     SetEnvIf Request_URI "(^_|/_|^\.|/\.)" forbidden
     <Files *>
        Order allow,deny
        Allow from all
        Deny from env=forbidden
     </Files> 
    

    您可以使用这种方法,但将正则表达式修改为适合您个人习惯的任何内容。一个优点是它可以在您的 DOCROOT .htaccess 文件中使用此模板。您不需要在受限子目录中包含 .htaccess 文件。

    :-)

    【讨论】:

      猜你喜欢
      • 2015-11-19
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 2014-04-01
      • 2018-07-24
      • 1970-01-01
      相关资源
      最近更新 更多