情報セキュリティ

基本情報技術者試験あるWebアプリのログイン処理は、入力されたIDとパスワードを文字列としてSQL文に連結し『該当行が1件以上あれ…

情報セキュリティ情報セキュリティ難易度:hard
あるWebアプリのログイン処理は、入力されたIDとパスワードを文字列としてSQL文に連結し『該当行が1件以上あれば認証成功』としている。診断で、パスワード欄に特定の文字列を入れるとパスワードを知らなくてもログインできてしまうと指摘された。開発標準でプレースホルダの全面利用が難しい既存箇所に、暫定でなく可能な範囲で確実性の高い対策を施すとき、最も適切なものはどれか。
構文をあらかじめ確定させた後に、入力値だけをバインド機構で渡す呼び出しに改める。
画面側の入力欄で記号を含む値をその場で弾き、英数字以外を送信できないよう制御を加える。
同一IPからのログイン失敗が一定回数を超えた時点で以後の接続を遮断し、不正な試行の継続を止める。
認証後に発行する識別子の有効期限を短く取り、万一奪われた場合に悪用できる時間を狭める。
正解
ア.構文をあらかじめ確定させた後に、入力値だけをバインド機構で渡す呼び出しに改める。

認証回避の原因は、入力をSQL構文に直接連結してデータと命令が混同される点にある。構文を先に確定させ、入力はバインド機構(プレースホルダ)で値としてのみ渡せば、特殊文字を含む入力もSQLの構文には影響せず、条件を常に真にするような注入が成立しなくなる。既存箇所でも該当処理を書き換えれば確実に効く根本対策である。

?選択肢ごとの解説

ア ○認証回避の原因は、入力をSQL構文に直接連結してデータと命令が混同される点にある。構文を先に確定させ、入力はバインド機構(プレースホルダ)で値としてのみ渡せば、特殊文字を含む入力もSQLの構文には影響せず、条件を常に真にするような注入が成立しなくなる。既存箇所でも該当処理を書き換えれば確実に効く根本対策である。
イ ×画面側の文字制限はブラウザの改変や直接の通信送信で容易に回避され、サーバ側で連結している限り注入は成立するため根本対策にならない。
ウ ×IPアドレス遮断は総当たりのような多数失敗を伴う攻撃に効くが、一回の特殊文字列で認証を回避する本問の手口は失敗を伴わず発動しない。
エ ×識別子の有効期限短縮は認証後の悪用時間を狭めるだけで、認証そのものを回避させてしまう入力連結の問題を解消しない。
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。

基本情報技術者試験は全4,036問。公開しているのはその一部で、登録すると残りも一問ごとにAI解説つきで解けます。SRS暗記カード・全真模試・弱点診断まで。

登録は1分・クレジットカード不要。無料のまま練習・暗記カード・模試まで使えます。

作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-sec-0097

【基本情報技術者試験】あるWebアプリのログイン処理は、入力されたIDとパスワード…|正解「構文をあらかじめ確定させた後…」|ukamiru 過去問