保护第三方PHP Web应用程序configuration文件的策略

我对保护PHPconfiguration文件的意见和策略感兴趣,尤其是那些使用db证书的configuration文件。

股票build议,将文件扩展名设置为* .php,尽pipe如此,但它不能防止目录读取攻击。 我正在考虑的特定情况:

  1. 我们有一个托pipe各种第三方应用程序的服务器。
  2. 我们不能彻底审查所有的应用程序
  3. 如果攻击者危害应用程序,他们可能会使用该应用程序从其他目录中读取文件。 DBconfiguration文件是一个明显的目标。

我有一个解决scheme,似乎有好处,但我不完全适应它。 我很乐意听到它的意见,以及

  1. find什么php_include设置
  2. 将configuration文件放在该目录中
  3. 确保载入configuration文件的require / include语句不指定硬path(没有前导./等)

GOALS

  • 隐藏configuration文件完全从一个错误的姐姐networking应用程序(更重要的是从networking服务器本身)。

  • 掩盖了configuration文件的实际位置。 通过阅读代码是不容易的。 这与在Web树之外指定path相反。

  • 最小的干预,无论是在服务器级别还是在应用程序级别。

  • 避免硬编码path。

这并没有解决configuration文件名称冲突,尽pipe更多的几个应用程序可能值得更改包括configuration文件名称。

不幸的是,我们的许多networking应用似乎都需要硬编码的path。

别人提出什么方法?

标准build议适用于:

  • 将configuration文件放置在Web根目录上方
  • 使用.htacess或类似的来拒绝对这些文件夹的访问
  • 使用文件权限来保护文件夹

更好的build议:

  • 确保您的数据库服务器只能由您的networking服务器通过networking/防火墙ACL和它自己的基于主机的身份validation访问
  • 不要使用密码,使用证书/ Kerberos / PKI(简单的谷歌有这个build议在MySQL中实现这一点 )
  • 如果您不信任应用程序,请在自己的无法访问其他应用程序文件的networking服务器上运行它
  • 使用绊网进行入侵检测

隐藏configuration文件,如你所build议似乎徒劳无功,一旦攻击者以这种方式控制你的系统,无论如何都是游戏。 你只是让自己的工作更难以维护你的networking应用程序,很难获得安全性。