📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

 
801行目: 801行目:
SQL文に含まれていたシングルクオーテーションがエスケープ処理されて、Toyama¥'s Wineに変換されていることが確認できる。<br>
SQL文に含まれていたシングルクオーテーションがエスケープ処理されて、Toyama¥'s Wineに変換されていることが確認できる。<br>
このように、'のような特殊な意味を持つ文字を、単なる文字の'として処理することができる。<br>
このように、'のような特殊な意味を持つ文字を、単なる文字の'として処理することができる。<br>
<br><br>
== 暗号化 / 復号 ==
データベースの接続情報を暗号化する場合は、openssl_encrypt / decrypt関数を使用して暗号化 / 復号を行う。<br>
<br>
暗号化キー (ENCRYPTION_KEY) と IV(ENCRYPTION_IV) は、ソースコードとは別の場所に保管する。<br>
<br>
また、INIファイルには暗号化された値を保存する必要がある。<br>
<br>
初期設定時において、以下に示すように値を暗号化して設定ファイルに保存する。<br>
<syntaxhighlight lang="php">
$encrypted_password = encryptString('実際のパスワード');
</syntaxhighlight>
<br>
<syntaxhighlight lang="php">
// 暗号化キーとIVを安全な場所に保存する
define('ENCRYPTION_KEY', '<32[byte]の秘密鍵>');
define('ENCRYPTION_IV', '<16バイトのIV>');
// 暗号化関数
function encryptString($plaintext)
{
    $cipher = "aes-256-cbc";
    $options = OPENSSL_RAW_DATA;
    return base64_encode(openssl_encrypt($plaintext,
                                        $cipher,
                                        ENCRYPTION_KEY,
                                        $options,
                                        ENCRYPTION_IV));
}
// 復号関数
function decryptString($encrypted)
{
    $cipher = "aes-256-cbc";
    $options = OPENSSL_RAW_DATA;
    return openssl_decrypt(base64_decode($encrypted),
                          $cipher,
                          ENCRYPTION_KEY,
                          $options,
                          ENCRYPTION_IV);
}
</syntaxhighlight>
<br>
<syntaxhighlight lang="php">
// 使用例
// INIファイルから読み込んだ接続情報を復号して使用
$host    = decryptString($config['host']) ?? 'localhost';
$dbname  = decryptString($config['dbname']) ?? '';
$username = decryptString($config['username']) ?? 'root';
$password = decryptString($config['password']) ?? '';
</syntaxhighlight>
<br><br>
<br><br>