查看根路径会带来什么安全隐患


What are the security implications of having your root path seen?

到目前为止,我一直将我的网站的根路径存储在public_html目录外的.ini文件中:

[settings]
home_url = 'http://www.example.com'
root_path = '/home/this/that/public_html'

使用单位:

function parse_ini() {
    $root = dirname(__FILE__);
    return parse_ini_file($root.'/../../config.ini', true);
} // End parse_ini
function do_something() {
    $ini = parse_ini(); // I now have $ini['settings']['root_path']
}

我对此感觉很好,因为.ini文件本身是不可公开访问的,而且我解析文件的唯一时间是在函数内,所以文件中数据的范围非常有限。这很重要,因为它包含我的数据库凭据。

我试图尽可能避免使用.ini文件,这主要是由于每次页面加载都要解析该文件几次的开销(因为它的作用域总是在一个函数内)。

如果将根路径放在具有全局范围的常量中,我可能会面临什么安全影响?

define('ROOT_PATH', '/home/this/that/public_html');

我正在考虑在.ini文件中只保留数据库凭据,并将其他所有内容从中移出。我唯一还没有找到合适位置的是服务器上的根路径,我有点担心如果有人发现它,可能会出现任何漏洞。

首先:您的ini文件"不可公开访问"-这是否意味着因为没有人知道目录而无法轻易找到它?如果是这样的话,这将是通过模糊实现的安全性。否则,您可以使用.htaccess文件轻松地对其进行保护。

另一方面,如果你想存储凭据,你肯定应该把它们放在PHP文件中。这是规范的方式,因为除非从服务器上卸载PHP,否则无法读取PHP文件的内容。它的解析效率也更高。

另一方面,如果存在其他漏洞,INI文件可能会被读取永远不要在你的安全系统上捅太多洞,否则最终会被攻破

TL;DR:暴露路径不是问题。如果你租了一个便宜的webhosting包,你还可以看到路径,这对webhoster来说是没有漏洞的,所以你可以弄清楚,它也不适合你!