实现 PHP 配置数据库文件加密可以通过以下步骤进行:
- 创建一个用于加密和解密的密钥。可以使用 OpenSSL 扩展的 openssl_random_pseudo_bytes 函数来生成一个随机密钥。
$key = openssl_random_pseudo_bytes(32);
- 将生成的密钥保存在一个独立的文件中,例如 config.key。
file_put_contents('config.key', $key);
- 修改数据库配置文件,将敏感信息(例如数据库用户名、密码等)替换为加密的形式。可以使用 openssl_encrypt 函数来加密数据。
$config = [ 'host' => 'localhost', 'username' => openssl_encrypt('myusername', 'AES-256-CBC', $key), 'password' => openssl_encrypt('mypassword', 'AES-256-CBC', $key), 'database' => 'mydatabase', ]; file_put_contents('config.php', '
- 在需要访问数据库的地方,使用 openssl_decrypt 函数来解密配置文件中的敏感信息。
$config = include 'config.php'; $dbUsername = openssl_decrypt($config['username'], 'AES-256-CBC', $key); $dbPassword = openssl_decrypt($config['password'], 'AES-256-CBC', $key); // 使用解密后的用户名和密码连接数据库 $db = new PDO('mysql:host=' . $config['host'] . ';dbname=' . $config['database'], $dbUsername, $dbPassword);重要提示:确保密钥文件(config.key)和配置文件(config.php)存放在安全的位置,不要让它们可以被公开访问。