存储MySQL凭据的安全方法

Fil*_*pos 3 php mysql database security

我刚刚开始学习PHP,并结束了我的第一个PHP和MySQL for dummies book我担心我的PHP应用程序和MySQL数据库之间的安全连接.

根据我的了解,一种方法是使用数据库凭据创建.php文件,例如:

--- database.php ---

<?php

define('HOST', 'localhost');
define('DB_USR' , 'mysql_username');
define('DB_PSWD' , 'mysql_password');
define('DB_NAME' , 'mysql_newbie');

?>
Run Code Online (Sandbox Code Playgroud)

然后require_once('database.php') 在每个需要任何类型的数据库查询的PHP页面中放置一个.

我担心这种方法是否安全.一旦将文件放在网络服务器上,是不是每个人都可以访问文件database.php?
任何人都可能阅读数据库的凭据并乱搞它的方式吗?

有什么想法吗?

joh*_*nes 6

你必须要看的第一件事是不同的攻击向量.

一个向量是通过HTTP到达的远程用户,另一个主要向量是在机器上具有shell访问或类似的本地用户.

防止第一个相对容易:确保不通过HTTP共享内容.一种简单的方法是调用文件,.php以便当用户猜出名称时执行PHP脚本并且不产生输出(这就是你已经做过的事情)稍微好一点是阻止从服务器配置访问文件.这两种方法仍然取决于您的操作,以确保您不会意外中断配置.更好的方法是将文件移出Web根目录,进入完全不同的目录.文档根目录外的文件无法通过服务器访问,因此永远不会泄漏.

为了防止本地攻击,保护是限制对Web服务器的访问权限(即使其由Web服务器拥有并仅向该用户帐户授予读取权限),但是这仍然为可以安装脚本的攻击者打开了一个向量服务器的不同vhost(如果它是分片服务器)缓解可能是PHP的"open_basedir"设置,其中PHP阻止访问不同目录中的文件.必须在服务器的配置中按vhost配置.