📢 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> | ||