如果htaccess将所有内容重定向到index.php,那么将lib文件保存在公共目录中是否安全


Is it secure to keep lib files in a public directory if htaccess is redirecting everything to index.php?

如果htaccess将所有内容重定向到index.php,那么将lib文件保存在公共目录中是否安全?

htaccess会重定向失败吗?

是否存在允许您访问目录树其余部分的循环孔?

.htaccess可能会失败,如果Web服务器出于任何原因决定停止解析它们。也许AllowOverride是通过Apache <Directory>指令打开的,您的网站被移动到其他地方,而<Directory>没有更新。所以现在突然.htaccess关闭了,所有文件都可用了。

如果你不想错误地提供某些内容,那么不要将其放在网站的文档根目录中。PHP非常关心web服务器的文档根,可以访问系统中web服务器具有读取权限的任何地方的文件。因此,将"重要"文件保存在其他地方,这样可以最大限度地减少意外送达的可能性。

如果htaccess正在保护文件,那么就没有这样的漏洞、后门或任何允许访问的东西。如果您不确定这些文件是否受到保护,请尝试自己从web访问这些文件。将人们从禁止的文件中重定向是一种方法,但我个人只有403人,主要是因为他们不应该在那里。

通常,lib文件本身不做任何事情(通常它们只是函数或类),因此如果设计得当,它们不会构成直接威胁。在PHP方面,解决这个问题的一种方法是定义一些常量,即define('IN_APPLICATION', true);,然后在所有lib文件的顶部执行以下检查:if !defined('IN_APPLICATION) exit;

如果lib文件只包含函数或类,并且具有将被解析为php文件的文件扩展名(例如mylibrary.php),那么理论上将它们保存在公共目录中不会带来安全隐患,因为如果客户端请求该文件,Web服务器将对其进行解析,并且不会向客户端输出任何内容。

示例库文件:

<?php
 function myfunc() {
   //do stuff
 }
?>

执行该文件不会有任何作用。