gpt4 book ai didi

php - 数据库连接参数的安全性

转载 作者:行者123 更新时间:2023-11-29 09:48:19 25 4
gpt4 key购买 nike

<?php 
class Database {

private $host = "localhost";
private $username = "root";
private $password = "";
private $dbname = "myapp";

public $conn;

public function DBConnection() {
$this->conn = null;
try {
$this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password);

$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MOD, PDO::FETCH_ASSOC);
$this->conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch(PDOException $exception) {
echo "Connection error: " . $exception->getMessage();
}

return $this->conn;

}
}
?>

我正在使用上述 PDO 方法连接到我的数据库。但是,如果我尝试在不同的页面上创建此类的新实例,例如 debug.php:

$db = new Database();

它会在页面源代码中抛出所有参数,包括我的密码。

我的问题是我的数据库安全因此受到损害的可能性有多大?

最佳答案

您永远不应该在源代码中存储身份验证凭据(用户 ID、密码、API key ),尤其是在您使用 git 等源代码控制系统时。一旦您git push,任何对存储库具有读访问权限的人都可以获得对数据库的写访问权限。有一些常见的替代方案:

  1. 将凭据存储在网络服务器配置中显式设置的环境变量中。
  2. 将凭据存储在 Web 服务器文档根目录外部的配置文件(例如 YAML 或 INI 文件)中,然后在应用程序的 Bootstrap 中读取该文件。 (并且不要将该文件包含在源代码控制存储库中!)

关于php - 数据库连接参数的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55263866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com