SQLインジェクションの対策
SQLインジェクションは、入力値をSQL文の文字列として直接連結したときに、入力の一部が命令として解釈されることで起こります。SQLの構造と値を分離するプレースホルダが有効なので、正答はエです。 プレースホルダ: SQL文を「SELECT ... WHERE id = ?」のように先に固定し、入力値はバインド機構で後から渡します。これにより、入力はSQL構文ではなくデータとして扱われます。値を文字列連結せず、利用するライブラリの方法に従って適切にバインドすることが重要です。 ア: 出力するURLのスキームをhttp・httpsに制限するのは、危険なスキームによるスクリプト実行などへの対策で、SQLインジェクション対策ではありません。 イ: 外部入力でサーバ内のファイル名やパスを直接指定させないのは、ディレクトリトラバーサルなどへの対策です。 ウ: 外部サイトのスタイルシートを無制限に取り込ませないことは、外部コンテンツ読み込みに伴うリスクへの対策で、SQL文の組立てとは関係しません。 エ:正解。 プレースホルダでSQLの構造と入力値を分離すれば、入力値がSQL命令として解釈されることを防げるため、有効な対策です。
プレースホルダ
SQLインジェクション
OSコマンドインジェクション
ディレクトリトラバーサル
SQL インジェクションの対策として、有効なものはどれか。
出典
令和6年度 基本情報技術者試験 科目A 問10
ア
URLをWeb ページに出力するときは, “http://” や “https:// で始まる URL だけを許可する。
イ
外部からのパラメータでWeb サーバ内のファイル名を直接指定しない。
ウ
スタイルシートを任意の Web サイトから取り込めるようにしない。
エ
プレースホルダを使って命令文を組み立てる。
前の問題
スキップ
【正解・解説】SQLインジェクションの対策|令和6基本情報 科目A 問10 | IT資格ラボ