看到根路径有什么安全隐患?

时间:2016-04-06 01:10:16

标签: php

到目前为止,我一直在我的服务器上将我的站点的根路径存储在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文件中只使用数据库凭据,并将其他所有内容移出。我唯一没有找到一个好地方的是服务器上的根路径,我有点担心如果有人遇到它会打开任何可能的漏洞。

1 个答案:

答案 0 :(得分:1)

首先,您的 ini 文件是"无法公开访问" - 这是否意味着它很容易找到,因为没有人知道目录?如果是这样,那将是security through obscurity。否则,您可以轻松地使用3^n = O(3^n)文件保护它。

如果您想要存储凭据,您一定要将它们放在 PHP 文件中。这是规范的方式,因为除非从服务器卸载PHP,否则无法读取PHP文件的内容。它也可以更有效地解析。

如果存在其他漏洞,

另一方面,INI文件可能可能被读取。 永远不要在你的安全漏洞中挖出太多洞,否则最终会被破坏!

TL; DR:公开路径是个问题。如果你租一个便宜的虚拟主机软件包,你也可以看到路径,这对webhoster来说没有任何漏洞,所以你可以弄明白,它也不适合你!