PHPでデータベースファイルの暗号化をどのように実装するか
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', '<?php return ' . var_export($config, true) . ';');
- データベースにアクセスする必要がある場合は、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)を安全な場所に保管し、公開アクセスできなくしてください。