B
BIC STATION
TOTAL PC SUPPORT

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 に設定し、データベースエンジン側での静的プレースホルダ処理を強制。不純な文字列の実行を物理的に遮断しています。

Vol.5 PDO シングルトンと SQL インジェクション対策 | BICSTATION | Bic Station