情報セキュリティ
基本情報技術者試験|あるWebアプリのログイン処理は、入力されたIDとパスワードを文字列としてSQL文に連結し『該当行が1件以上あれ…
あるWebアプリのログイン処理は、入力されたIDとパスワードを文字列としてSQL文に連結し『該当行が1件以上あれば認証成功』としている。診断で、パスワード欄に特定の文字列を入れるとパスワードを知らなくてもログインできてしまうと指摘された。開発標準でプレースホルダの全面利用が難しい既存箇所に、暫定でなく可能な範囲で確実性の高い対策を施すとき、最も適切なものはどれか。
ア構文をあらかじめ確定させた後に、入力値だけをバインド機構で渡す呼び出しに改める。
イ画面側の入力欄で記号を含む値をその場で弾き、英数字以外を送信できないよう制御を加える。
ウ同一IPからのログイン失敗が一定回数を超えた時点で以後の接続を遮断し、不正な試行の継続を止める。
エ認証後に発行する識別子の有効期限を短く取り、万一奪われた場合に悪用できる時間を狭める。
正解
ア.構文をあらかじめ確定させた後に、入力値だけをバインド機構で渡す呼び出しに改める。
認証回避の原因は、入力をSQL構文に直接連結してデータと命令が混同される点にある。構文を先に確定させ、入力はバインド機構(プレースホルダ)で値としてのみ渡せば、特殊文字を含む入力もSQLの構文には影響せず、条件を常に真にするような注入が成立しなくなる。既存箇所でも該当処理を書き換えれば確実に効く根本対策である。
?選択肢ごとの解説
ア ○認証回避の原因は、入力をSQL構文に直接連結してデータと命令が混同される点にある。構文を先に確定させ、入力はバインド機構(プレースホルダ)で値としてのみ渡せば、特殊文字を含む入力もSQLの構文には影響せず、条件を常に真にするような注入が成立しなくなる。既存箇所でも該当処理を書き換えれば確実に効く根本対策である。
イ ×画面側の文字制限はブラウザの改変や直接の通信送信で容易に回避され、サーバ側で連結している限り注入は成立するため根本対策にならない。
ウ ×IPアドレス遮断は総当たりのような多数失敗を伴う攻撃に効くが、一回の特殊文字列で認証を回避する本問の手口は失敗を伴わず発動しない。
エ ×識別子の有効期限短縮は認証後の悪用時間を狭めるだけで、認証そのものを回避させてしまう入力連結の問題を解消しない。
情報セキュリティの他の問題
あるWebアプリの一覧画面は、利用者が選んだ並べ替え対象の列名をSQL文のORDER…M社の会員検索機能で、利用者の入力した会員名をSQL文に直接連結して問合せを実行している。診断で『名前欄に特殊な文字列を入れ…あるWebサービスで二つの不具合が報告された。(1)商品レビュー投稿欄に入れたスクリプトがデータベースに保存され、以後そのペ…ある会員サイトの送金処理にCSRF対策としてトークンを導入することになった。開発者が以下の実装案を検討している。CSRF対策…あるWebアプリは、利用者が最初にアクセスした時点でセッションIDを発行し、その後ログインに成功してもセッションIDを変えず…あるWebアプリには、利用者が指定したURLの画像を取得してプレビュー表示する機能がある。攻撃者がこの機能に社内ネットワーク…あるWebアプリは、利用者が入力したホスト名に対してサーバ上でネットワーク疎通確認コマンドを実行し、その結果を画面に表示する…あるWebアプリは、利用者のブラウザに保存させた状態データを、サーバ受信時にそのままオブジェクトへ復元(デシリアライズ)して…
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。
基本情報技術者試験は全4,036問。公開しているのはその一部で、登録すると残りも一問ごとにAI解説つきで解けます。SRS暗記カード・全真模試・弱点診断まで。
登録は1分・クレジットカード不要。無料のまま練習・暗記カード・模試まで使えます。
作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-sec-0097
