我对保护 PHP 配置文件的评论和策略很感兴趣,特别是那些带有 Db 凭据的文件。
股票建议,将文件扩展名设置为 *.php,就目前而言是没问题的,但它不能防止目录阅读攻击。我正在考虑的特定场景:
- 我们有一个托管各种第三方应用程序的服务器。
- 我们无法彻底审查所有应用
- 如果攻击者入侵了某个应用程序,他们可能会使用该应用程序从其他目录读取文件。数据库配置文件是一个明显的目标。
我有一个解决方案,似乎有其优点,但我并不完全满意。我很想听听大家对此的评论,以及
- 查找 php_include 的设置
- 将配置文件放在该目录中
- 确保加载配置的 require/include 语句没有指定硬路径(没有前导 ./ 等)
目标
对错误的姊妹网络应用程序(更重要的是,对网络服务器本身)完全隐藏配置文件。
隐藏配置文件的实际位置。无法通过阅读代码轻松确定。这与指定 Web 树之外的路径相反。
在服务器级别和应用程序级别,都只需最少的干预。
避免对路径进行硬编码。
这并不能解决配置文件名冲突的问题,尽管对于一些应用程序来说,可能值得更改包含的配置文件名。
不幸的是,我们的许多网络应用程序似乎需要硬编码路径。
其他人提出了哪些方法?
答案1
标准建议适用:
- 将配置文件放在 Web 根目录之上
- 使用 .htacess 或类似文件拒绝访问这些文件夹
- 使用文件权限保护文件夹
更好的建议:
- 确保您的数据库服务器只能通过网络/防火墙 ACL 和其自己的基于主机的身份验证由您的 Web 服务器访问
- 不要使用密码,使用证书/Kerberos/PKI(简短的谷歌有在 MySQL 中实现此建议)
- 如果你不信任某个应用程序,请在其自己的网络服务器上运行它,该服务器无法访问其他应用程序的文件
- 使用绊线进行入侵检测
按照你的建议隐藏配置文件似乎是徒劳的,一旦攻击者以这种方式控制了你的系统,游戏就结束了。你只会让自己维护 web 应用程序的工作变得更加困难,而安全性却没有提高。