• ベストアンサー

SQLInjection対策

utf8でスクリプトを作成しているのですが、SQLInjection対策の際、mysql_real_escape_stringで十分なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

mysql_real_escape_stringがエスケープしてる文字を把握すると良いかと思います。 \x00, \n, \r, \, ', " そして \x1a こんなのですね。\x00はNUL \x1aはSUMです。 例えば、セミコロンはエスケープされないので、 $a = mysql_real_escape_string($_GET['id']); mysql_query("SELECT * FROM table WHERE id = $a"); とかにしてると危ないですね。 この場合、is_numericなどでチェックしておいたり、sprintfなどでフォーマットをかけておいてあげる必要があると思います。 mysql_query("SELECT * FROM table WHERE id = '$a'"); こんなのでも良さそうですが。

その他の回答 (1)

  • corp
  • ベストアンサー率40% (13/32)
回答No.1

こんばんは。 まずは、IPA(情報処理推進機構)が出している 「安全なウェブサイトの作り方 改訂第3版」をご一読されたらいかがでしょう。 (参考URLをご覧ください) SQLインジェクション対策について、ウェブ上でいろいろな情報を収集する際にも役立つ情報が載っています。

参考URL:
http://www.ipa.go.jp/security/vuln/websecurity.html

関連するQ&A