2

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

  1. 用来.htaccess阻止他们
  2. 定义一个常量并将其传递给包含的文件,包含的文件然后检查该常量是否存在。

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

4

4 回答 4

9

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

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

于 2012-08-12T18:08:39.670 回答
2

要完成 Brad 的回答,您可以按以下方式组织文件夹:

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

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

如果你不能修改这个结构,唯一可以接受的方法是使用一个.htaccess(或等效的)来防止includes被公开访问。

于 2012-08-12T18:13:07.650 回答
0

如果您使用 Apache 网络服务器,您可以拒绝访问所有 .inc.php 文件。您只需将以下内容添加到您的 Apache Vhost 配置中:

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

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

于 2012-08-12T18:26:51.547 回答
0

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

于 2012-08-12T18:28:05.117 回答