トップページ > コンテンツ > プログラミング入門 > Ajax入門 > PHP入門 > PHPセキュリティ > SQLインジェクションなどについて

対策1.htmlspecialchars()を使う<SQLインジェクション>

 そういったSQLインジェクションを予防する手段として
 htmlspecialchars()という関数は覚えておこう。
 htmlspecialchars()関数は特殊文字をHTMLエンティティに変換する関数で、
 <>を<>といった形に変換する。

 タグを取り除く関数として、
 strip_tags()関数などがあるがallowable_tagsで指定された許可した全てのタグの属性を修正しなかったり
 http://www.phppro.jp/qa/103といったケースが考えられるので、
 やはりhtmlspecialchars()関数を使った方が良いようだ。

 また、XSSに脆弱とならないように第2引数として"(ダブルクォーテーション)だけでなく
 '(シングルクォーテーション)も消すような指定としてENT_QUOTESをつけた方が良い。
 何も指定しない場合にはENT_COMPATと同じ処理を行い"(ダブルクォーテーション)のみHTMLエンティティに変換する。
 さらに、不正な文字エンコーディングを利用した攻撃を防ぐために3つ目の引数も指定しておいた方が良い。

対策2.全ての変数を文字列をデータベース用にエスケープする<SQLインジェクション>

 ~_escape_string系の関数を使うことで特殊文字をエスケープする

対策3.入力チェックを行う<SQLインジェクション、ディレクトリトラバーサル>

 ../等の入力文字は例外処理にする->ディレクトリートラバーサル対策
 入力値が想定される範囲内かチェック(preg_match()やis_numeric()等を用いる)
最終更新:2011年04月09日 13:51