PHPでのSQLインジェクション対策
SQLインジェクション対策のためには、フォームなどを通じて受け取ったデータに含まれる特殊文字を、無効な形式に変換するエスケープ処理を行う必要があります。
PHPでは、PDOのプリペアドステートメントを利用することでエスケープ処理を施すことができます。
プリペアドステートメントは、クエリの実行準備を済ませたSQL文ですが、同時に入力値のエスケープ処理も行ってくれます。
以下に記述例を示します。
1 2 |
$stmt = $pdo->prepare("SELECT * FROM members WHERE age >= ? AND age<= ?"); $stmt->execute(array($minAge, $maxAge)); |
この例では、prepare()の中に記述している1番目の?に$minAgeが、2番目の?に$maxAgeが対応します。
これらの入力値を格納した変数$minAgeと$maxAgeに対してエスケープ処理を行います。