目前我将我的config.php文件放在我的Apache服务器上的include folder
中,这使我可以轻松访问该文件,并且必须编写目录路径。我认为这是一个好主意,因为它是安全的,无法从公共根文件夹外部访问。
我从未被告知如何创建config.php
文件,所以我即兴创作,但似乎它可能是以错误的方式完成的......(现在不是那么安全)。然后我开始搜索有关如何以正确的方式构建这些配置文件的教程,但是每个教程都有自己的方法来做它。有些是通过使用数组来实现的......有些是通过定义配置变量来实现的。其他人通过使用类..可能没有正确的方法,但我想要一个安全且功能非常强大的系统才能工作,我真的不关心它会有多么先进......
这是我当前的配置文件..您应该很容易看到它不以任何方式安全,因为任何人都可能只能回显变量然后读取连接。
<?
$main_host = 'db01.server.local'; // There may be db02, db03 etc.
$main_psw = '********';
$main_host_end = '.server.local'; // makes it possible for me to connect to a different datastore only knowing the subdomain.
// *** USERS *** //
$w_user = 'w_user';
$xr_user = 'xr_user';
$r_user = 'r_user';
$w_server = 'w_server';
$w_db_admin = 'dbw_admin';
// *** DATABASES *** //
$db_accounts = 'accounts';
$db_server = 'server_setup';
// *** DB ACCOUNTS *** //
try {
$w_accounts = new PDO("mysql:host=$main_host;dbname=$db_accounts", $w_user, $main_psw);
$w_accounts->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
try {
$r_accounts = new PDO("mysql:host=$main_host;dbname=$db_accounts", $r_user, $main_psw);
$r_accounts->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
// *** DB SERVER SETUP *** //
try {
$w_server = new PDO("mysql:host=$main_host;dbname=$db_server", $w_user, $main_psw);
$w_server->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
try {
$r_server = new PDO("mysql:host=$main_host;dbname=$db_server", $r_user, $main_psw);
$r_server->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
?>
所以......直接问这个问题。创建config.php文件的正确方法是什么?我真的也希望其他人会发现这很有用。
编辑我也应该考虑到这可能不是全部......我可能还有更多的联系......不仅accounts
和server_setup
答案 0 :(得分:0)
首先,永远不要在生产中回显异常消息,而是将它们放入可读的日志文件中。
如果你看一下很多MVC框架,他们的php配置文件只包含一个数组,在文件末尾返回。
限制访问这些配置文件可以通过.htaccess“拒绝所有人”来完成
答案 1 :(得分:0)
如果有人在您不信任的项目中编写代码,那么无论如何您都遇到了大麻烦。所以回声变量一定不是问题。因此,您唯一关心的是如何通过Web浏览器保护您的PHP配置。
为此,我建议将所有配置文件放入configs/
目录并添加.htaccess
文件,其中包含以下内容:
Options -Indexes
<FilesMatch .*\.php$>
order deny,allow
deny from all
</FilesMatch>