SQLインジェクション(SQL Injection)のメモ。
SQLインジェクション(SQL Injection)は外部リクエスト変数にシングルクォーテーション(‘)やダブルクォーテーション(“)を混ぜて悪意あるSQL文を実行する。
SQLの文字リテラルはシングルクォーテーション(‘)またはダブルクォーテーション(“)で囲む。多くのDBはどちらを用いても良い。慣用的にシングルクォーテーションを使う場合が多い。
PHPにはSQLインジェクション対策として各データベースに応じた関数mysqli_real_escape_string(MySQL)やpg_escape_string(PostgreSQL なら )を提供している。
専用の関数を使うことが推奨されているが汎用的な関数addslashes関数もある。
addslashesはシングルクォート(‘), ダブルクォート(“),バックスラッシュ (\) ,NUL (NULL バイト)をエスケープする。
addslashes関数はSQL文の終了を意味する;(セミコロン)はエスケープされない。MySQLなどSQLの複文発行を禁止している場合は良いがPostgreSQLなど複文を許可している場合は注意が必要。
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。