SQL文使用時の簡単なインジェクション対策

SQLインジェクションとは

SQLインジェクションとは、SQL文のパラメータを外部の人が自由に書き換えて、データベースに不正なアクセスをすること。

この対策として、何もやらないのは良くないと思ったので、とりあえず対策としては十分ではないのですが、パラメータをエスケープする方法をハックに残します。

SELECT post_title
FROM $wpdb->posts
WHERE post_type = 'hoge'
AND ID = 1

以上のようなSQL文では、パラメータはhoge1の二つあります。これをprepareという関数を利用してエスケープします。

// パラメータのエスケープ(数字は%d 文字列は%s)
$escape_info = array('hoge',1);
$wpdb->prepare("
  SELECT post_title
  FROM $wpdb->posts
  WHERE post_type = %s
  AND ID = %d", $escape_info);