php - 保护数据库连接信息

标签 php database security webserver credentials

我知道How do I secur my database connection credentials? 这个问题已被多次询问和回答(例如 How to secure database passwords in PHP?)。

该问题的一个普遍接受的答案是将详细信息存储在网络根目录之外。但我很好奇为什么这真的会产生很大的不同。

据我所知,一个人无法通过 HTTP 下载 PHP 文件的源代码(除非您的网络服务器配置不正确,但您会立即知道)。因此,除非您无论如何都可以访问 PHP 文件的源,否则您将无法看到凭据。如果我错了,请纠正我,但这是否基本上意味着您需要 shell 访问权限?如果你有 shell 访问权限,你就不能直接访问 Web 根目录之外的文件吗?

如果该问题的答案是包含文件可能具有特殊权限,不允许除 Web 服务器用户以外的任何人读取它,那么(考虑到我有 shell 访问权限),我不能只写 (或修改)任何 PHP 文件以仅回显这些凭据?

所以问题是,将凭据直接存储在 PHP 脚本中还是存储在 Web 根目录之外的文件中,真的有什么不同吗?

最佳答案

假设,由于网络服务器出错,网络服务器不再处理php文件,而是将其视为html文件。

在那种情况下,像 http://mysite.com/config.php 这样的东西会简单地揭示你的数据库的凭据。

所以答案是:是的,存储数据库凭据的位置和方式确实很重要。

关于php - 保护数据库连接信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12841087/

相关文章:

javascript - 当我尝试使用 ng-init 时,Angular JS : Controller not working. 一切都很完美

php - 外键约束使 SELECT 查询返回 0 行

c# - 添加新数据源对话框期间新连接失败

mysql - 尝试设计一个在线学生练习数据库

security - elasticsearch在正在运行的集群上应用安全性

amazon-web-services - AWS Cognito 针对不同用户池刷新 token 也会返回有效 token

php - 如何比较两个多维数组中的唯一条目?

php - MySQL 变量(使用语句)

.net - 为什么在没有事务的情况下插入 1M 记录比在事务中插入要慢?

javascript - 怎样对付邪恶呢?在 System.Shell.execute() 之前验证用户输入;