将私人 PHP 文件存储在 public 目录之上并使用 require_once 加载它们是否安全?

Safe to store private PHP files above public directory and load them using require_once?

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

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

我使用以下方法在每个页面的顶部导入这些私人文件:

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

所以我可以访问其中的 define 变量以获取 populate/generate 内容。

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

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

deny from all

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

Is this the correct approach?

是的。

Or should I be using a different PHP function/approach to access private files?

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

默默无闻的安全根本就不是安全。