セキュリティ
SQLインジェクションの対策として、有効なものはどれか。
ア.URL をWeb ページに出力するときは、“http://”や“https://”で始まる URL だ けを許可する。
イ.外部からのパラメータでWebサーバ内のファイル名を直接指定しない。
ウ.スタイルシートを任意のWebサイトから取り込めるようにしない。
エ.プレースホルダを使って命令文を組み立てる。正解
解説
SQLインジェクションは「注文伝票に悪意のある追加注文を書き込む攻撃」で、プレースホルダは『記入欄が決まった専用伝票』を使って書き換え不能にする仕組みです。
なぜ エ が正解か
プレースホルダ(`?`や`:name`)を使うと、SQLの『命令の骨格』と『ユーザーのデータ』を別ルートでDBに渡せます。DBは骨格をコンパイルした後にデータを埋め込むので、たとえ入力が `' OR '1'='1` でも『ただの文字列』として扱われ、命令文として実行されません。伝票の品目欄に何を書いても『料理名』としか読まれない、そういう仕掛けです。
出典: 基本情報技術者試験 令和6年 公開問題