基本情報技術者試験「入力値検証」の問題
A社のWebアプリで、利用者が入力する都道府県コードを検証する処理を実装する。コードは『01』から『47』までの定義済みの値だけが正当である。多様な不正入力を確実に排除するための検証方式として、最も適切なものはどれか。
ア取り得る値の集合を事前に確定させ、その集合に属さない入力をすべて拒む。
イ過去に攻撃で使われた危険な文字列のパターンを列挙し、該当する入力を拒否する。
ウ入力された文字列の長さが規定のバイト数以内に収まっているかだけを確認する。
エ入力に含まれる記号文字を無害な文字へ置換してから処理を継続する。
正解
ア.取り得る値の集合を事前に確定させ、その集合に属さない入力をすべて拒む。
正当な値が有限かつ明確に列挙できる場面では、許可する値だけを定義して一致した入力のみ通すホワイトリスト方式が最適である。定義外の入力は理由を問わず一律に弾けるため、未知の攻撃パターンも含めて確実に排除でき、漏れが生じにくい。
?選択肢ごとの解説
ア ○正当な値が有限かつ明確に列挙できる場面では、許可する値だけを定義して一致した入力のみ通すホワイトリスト方式が最適である。定義外の入力は理由を問わず一律に弾けるため、未知の攻撃パターンも含めて確実に排除でき、漏れが生じにくい。
イ ×危険な文字列を列挙して拒否するブラックリスト方式は、列挙漏れや新手の攻撃に対応できず、正当値が明確な本件では過剰かつ不確実である。
ウ ×長さの確認だけでは、規定バイト数内に収まる不正な値(例えば存在しないコード)を通してしまい、正当性の検証にならない。
エ ×記号の置換は無害化の一手だが、置換後も範囲外の値が残り得るため、定義済み値だけを通すべき本件の要件を満たさない。
✎くわしく
入力値検証はホワイトリスト(許可リスト)方式とブラックリスト(拒否リスト)方式に大別される。正当値が列挙可能なら前者が原則であり、『許可したものだけ通す』ことで未知の脅威にも頑健になる。ブラックリストは正当値を定義できない場合の次善策である。
✓本番での押さえどころ
試験のコツ
正当な値が有限・明確に列挙できる入力検証はホワイトリスト方式が原則。『許可したものだけ通す』が鍵語である。
覚え方
ホワイトリストは『入場者名簿』。名簿にある人だけ通すので、想定外の侵入者を確実に止められる。
よくある誤り
攻撃文字列を拒否すれば安全と考えブラックリストを選ぶ。列挙漏れが必ず生じ、正当値が明確な場面ではホワイトリストが優先される点を見落とす。
情報セキュリティの他の問題
A社の経理担当者が、取引先を装ったメールに添付された請求書ファイルを業務PCで開いたところ、見慣れない画面が一瞬表示されて消…B社のWebサービスで、複数の利用者アカウントに対し正しいIDとパスワードの組合せによるログインが短時間に外部から成立する事…C社では、退職予定者や異動者のアカウント権限の見直しが滞り、業務上不要になった共有フォルダへのアクセス権が残り続けている。情…D社のファイルサーバがランサムウェアに感染し、業務ファイルが暗号化された。D社は日次でバックアップを取得しているが、バックア…E社の従業員に、取引先銀行を名乗る『口座情報の更新が必要』というメールが届いた。本文中のリンク先URLにアクセスすると、銀行…F社は社外の従業員が、カフェなどの公衆無線LANを利用して社内システムへアクセスしている。通信内容が経路上で第三者に盗聴・改…
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-b-sec-0109