SQLインジェクション : PHP

Pocket

SQLインジェクション(SQL Injection)のメモ。

SQLインジェクションとは

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.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。