| ID | ユーザ名 | メールアドレス |
|---|---|---|
| A001 | TARO JOHO | t-joho@email.org.jp |
| A002 | JIRO JOHO | j-joho@email.org.jp |
| A003 | HANAKO JOHO | h-joho@email.org.jp |
情報セキュリティスペシャリスト試験 平成28年度春期 午前Ⅱ 問21「“アカウント”表に対して,SQL 文を実行したとき,“アカウント”表の全ての行が…」の正解と解説です。情報処理安全確保支援士試験の「SQLインジェクション」分野の過去問で、各選択肢の正誤も解説付きで確認できます。
ア. ' OR '--' = '--
SQLインジェクションでは、WHERE句の文字列リテラルを閉じてOR条件で常に真を作り、全行を返させる。アを入れるとユーザ名='' OR '--' = '--'となり、'--' = '--'が常に真のため条件全体が真になり全行が取得される。他の選択肢は引用符やコメントの位置で構文エラーになるか条件が成立しない。実務ではプレースホルダ(プリペアドステートメント)で入力を値として扱い、文字列連結を避けることが根本対策となる。