PDO シングルトンと
SQL インジェクション対策
2026.04.17
11 MIN READ
AUTHOR: MAYA
"信頼できない入力値は、システムにとって毒です。その毒を無効化し、かつ効率的にデータを繋ぐパイプラインを構築します。"
1. Singleton パターンで接続を一本化
リクエストのたびに新しい DB 接続を生成するのは、リソースの無駄遣いです。`Database` クラスにシングルトンパターンを適用し、アプリケーション全体で一つの PDO インスタンスを使い回す設計にしました。これにより、接続オーバーヘッドを最小限に抑えています。
Connection Logic
class Database {
private static $instance = null;
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new PDO(...);
}
return self::$instance;
}
}2. プリペアドステートメントによる防御
SQL インジェクションは、Web サイトにとって致命的な脆弱性です。動的な値を SQL に埋め込む際は、必ずプリペアドステートメントを使用し、プレースホルダによるバインド処理を徹底しました。これは、レンタルサーバー上で個人情報を守るための絶対的な「鉄則」です。
Security Best Practices
PDO::ATTR_EMULATE_PREPARES を false に設定し、データベースエンジン側での静的プレースホルダ処理を強制。不純な文字列の実行を物理的に遮断しています。