如何将浏览器排除在我的库之外?它们应该放在哪里


How do I keep browsers out of my libraries? Where should they be placed?

通过研究,我发现了两种常见的技术来防止客户端直接使用浏览器访问库:

  1. 使用.htaccess将它们拒之门外
  2. 定义一个常量并将其传递给包含的文件,包含的文件然后检查该常量是否存在。

但是,仅将这些文件保留在文档根目录之外似乎是明智的。这种方法有什么问题吗?

最好的办法是把它放在你的文档根之外。 没有理由将包含放在可直接访问HTTP的位置。

一些共享网络主机配置不佳,没有此选项,但大多数都有,而且您在自己的服务器或 VPS 上肯定有这个选择。

要完成布拉德的回答,以下是组织文件夹的方法:

/path/to/project/
  public_html/
    index.php
  includes/
    includes.php

您的网络服务器的根文件夹将是 public_html

如果无法修改此结构,则唯一可接受的方法是使用 .htaccess(或等效项)来防止公开访问includes

如果您使用 Apache

Web 服务器,则可以拒绝访问所有 .inc.php 文件。 您只需要将以下内容添加到您的 Apache Vhost 配置中:

<FilesMatch .inc.php>
   Order allow, deny
   deny from all
</FilesMatch>

您仍然可以在 php 代码中包含这些文件。

如果库文件只定义类/函数/其他任何内容,并且您的服务器没有以可以查看源代码的方式进行配置,那么无论如何,通过 Web 服务器请求脚本都不会实现任何效果。话虽如此,如果可以的话,您不妨将它们存储在文档根目录之外。