PHP等のスクリプトからMYSQLなどのデータベースに接続しクエリする場合、\n, \r, \, ', "などの文字列をエスケープする必要があります。上記文字列はSQLでは特別な意味を持つためです。(HTMLでいう < や > に相当。)
エスケープを行う為の関数がいくつか用意されているので、自力でエスケープする必要はありません。また、サーバー側で「magic_quotes_gpc」の設定がonになっている場合は自動でエスケープされます。
しかし、magic_quotes_gpcやエスケープ関数addslashesはインジェクション攻撃による脆弱性があるらしいので使わない方が無難らしい。(インジェクション攻撃とは、HTMLのフォームなどから不正なデータを送信し、不正アクセスなどをすること。)
エスケープするにはmysql_real_escape_string()関数を使用するのが無難っぽい。ただし、magic_quotes_gpcがonになっていると2重でエスケープ処理されてしまうので、.htaccessで設定を無効にするか、stripslashes()関数でエスケープ文字を取り除く。ただ、mysql_real_escape_string()関数を使っても万全ではないらしい。SHIFT-JISを使用するとヤバいらしい。



コメント(0)
コメントが存在しません。