可以安全地将私有PHP文件存储在公共目录上并使用require_once加载它们吗?

时间:2015-07-28 17:24:02

标签: php database security require require-once

所以目前我的网站结构如下:

/private
    /databaseconfigfile.php
    /otherprivatestuff.php
/public
    /index.php
    /pages
        /page1.php
        /page2.php

我使用以下命令在每个页面的顶部导入这些私有文件:

require_once('../databaseconfigfile.php');

因此,我可以访问其中的define个变量来填充/生成内容。

它们包含数据库详细信息,各种第三方工具(如SMTP,AWS等)的API密钥。这是正确的方法吗?或者我应该使用不同的PHP函数/方法来访问私有文件?我担心这种方法可能容易发生目录遍历攻击。

2 个答案:

答案 0 :(得分:2)

  

这是正确的方法吗?

  

或者我应该使用不同的PHP函数/方法来访问私有文件吗?

不,将它们保留在文档根目录之外就足够了。例如,如果您的应用程序中某处存在Local File Inclusion漏洞,则应专注于修复漏洞而不是尝试隐藏敏感文件。

通过默默无闻的安全根本不是安全。

答案 1 :(得分:1)

是的,这是一个很好的做法。但是,如果不可能 - 将一些文件放在网站www目录之上,那么你可以在私人文件夹中创建.htaccess文件(用于apache),内容为:

deny from all

它阻止访问目录中的任何文件。