php - 这是“隐藏”数据库凭据的足够好方法吗?
问题描述
只是寻找一些提示,如果这足够好,或者我应该做任何不同的事情来“隐藏”我的数据库凭据。找了很久。我找到了很多方法来做到这一点,并且觉得每个人都以不同的方式做这件事。所以想知道这是否足够好。谢谢你。
现在,我将一个带有我的数据库凭据的 config.ini 文件存储在公共目录之外。然后在公共目录中,我得到了一个文件夹名称 db_includes。这是我有我的数据库连接 php 文件的地方。这是数据库连接的代码。
$config = parse_ini_file('../../private/config.ini');
$db = new \PDO('mysql:dbname='.$config['DB_NAME'].';host='.$config['DB_SERVER'].';charset=utf8mb4', ''.$config['DB_USERNAME'].'', ''.$config['DB_PWD'].'');
同样在 db_includes 文件夹中,我得到了一个 .htaccess 文件,该文件具有“全部拒绝”,因此无法访问该 db_includes 文件夹或数据库连接文件。
这是好还是我也应该将数据库连接文件移到公共目录之外并在需要时调用它?
解决方案
有几种方法可以做到。首先,我建议使用 PHP 文件来存储凭据,这样如果您的 htaccess 失败,无论如何都会解析 php 文件并且您的凭据不会出现:
配置.php:
<?php
return [
"DB_NAME" => "database",
"DB_USER" => "user"
// ...
];
无论您需要:
$config = require "path/to/config.php";
$db = new \PDO('mysql:dbname='.$config['DB_NAME'].';host='.$config['DB_SERVER'].';charset=utf8mb4', ''.$config['DB_USERNAME'].'', ''.$config['DB_PWD'].'');
如果可能,请将其保存在您的公用文件夹之外,因为这是确保其安全的好方法。
请记住,如果您的数据库和服务器配置良好且足够安全,则您无需担心数据库凭据。
推荐阅读
- python - “tf.nn.relu(A)”和“tf.maximum(A, 0)”是一样的吗?
- c# - 求一个Winforms System.ComponentModel.Design 设计图面BeginDrag/EndDrag事件挂钩
- javascript - 将值推送到数组,并从数组中打印值
- android - Recyclerview:编辑视图的布局参数而不膨胀
- amazon-web-services - 如何***安全地***让用户删除他们在 AWS S3 上的资源?
- java - Java:直接比较两个数字(a < b)与相减(ab < 0)
- ionic-framework - 当我使用 ionic build --prod 时,build 文件夹中的文件会随机消失并重新出现
- c# - 我应该在对其执行并行循环之前锁定一个列表吗?
- json - VS 代码、c++ 扩展、task.json 有没有办法将 args 分组到数组中并在任务中引用
- ruby - Powershell 和 Ruby 中不同的 SHA1 哈希结果