通过研究,我发现了两种常见的技术来阻止客户端直接使用浏览器访问库:
- 用来
.htaccess
阻止他们 - 定义一个常量并将其传递给包含的文件,包含的文件然后检查该常量是否存在。
但是,将这些文件保留在文档根目录之外似乎是明智的。这种方法有什么问题吗?
最好的办法是把它放在你的 docroot 之外。没有理由将包含放在直接 HTTP 可访问的位置。
一些共享网络主机配置不当,没有此选项,但大多数都有,而且您在自己的服务器或 VPS 上肯定有此选择。
要完成 Brad 的回答,您可以按以下方式组织文件夹:
/path/to/project/
public_html/
index.php
includes/
includes.php
您的网络服务器的根文件夹将是public_html
.
如果你不能修改这个结构,唯一可以接受的方法是使用一个.htaccess
(或等效的)来防止includes
被公开访问。
如果您使用 Apache 网络服务器,您可以拒绝访问所有 .inc.php 文件。您只需将以下内容添加到您的 Apache Vhost 配置中:
<FilesMatch .inc.php>
Order allow, deny
deny from all
</FilesMatch>
您仍然可以在您的 php 代码中包含这些文件。
如果库文件只是定义类/函数/任何东西,并且您的服务器没有以可以查看源代码的方式进行配置,那么无论如何通过 Web 服务器请求脚本将无法实现任何目标。话虽如此,如果可以的话,您不妨将它们存储在文档根目录之外。