【情報処理安全確保支援士試験 令和4年度 春期 午後1 問1 No.1】

情報処理安全確保支援士試験 令和4年度 春期 午後1 問1

【出典:情報処理安全確保支援士試験 令和4年度 春期 午後1 問1(一部、加工あり)】

問1 Webアプリケーションプログラム開発のセキュリティ対策に関する次の記述を読んで、設問1〜3に答えよ。

 H社は、Webアプリケーションプログラム(以下、Webアプリという)を開発する従業員200名の会社である。H社では、開発部がWebアプリを開発し、情報セキュリティ部が、表1に示す方法に従って、脆弱性検査を実施する。

 開発部では、自部で開発したSシステムというWebシステムを利用して、コーディングルールなどの社内ルールを含む各種の情報を共有している。Sシステムの利用者は、ログイン後に情報の投稿と表示を行うことができる。投稿された情報はデータベースに格納される。
 ログインから情報表示までのSシステムの画面繊維を表2に示す。

下線①について、適切な文字列の例を、解答群の中から選び、記号で答えよ。:
解答群:ア %0D%0A イ %20 ウ <br> エ <p>

利用者の入力を基にHTTPレスポンスヘッダを生成する処理において、①改行コードを意味する文字列を入力したときに、HTTPヘッダフィールドが追加されないことを確認する。
 表1(脆弱性検査の方法(抜粋))項番1のHTTPヘッダインジェクションとは、WebサーバへのHTTPリクエストに攻撃用のコードを仕込むことで、HTTPレスポンスにヘッダフィールドやスクリプトを追加させWebサーバ上で不正な行為を行う攻撃です。
 HTTPヘッダインジェクションには、攻撃用のコードとして改行コードを使うものがあります。
 HTTPにおける改行コードはASCIIコードで表現し、具体的にはCF(Carriage Return、行頭復帰)を「0D」、LF(Line Feed、改行)を「0A」で表し、文字との区別のため「%」を付与(パーセントエンコーディング)し、「%0D%0A」とします。

下線②について、名称を、10字以内で答えよ。:プレースホルダ

SQL分の組み立てにおいて、SQL分のひな形の中に②変数の場所を示す?記号を置く技法を利用する。
 表1(脆弱性検査の方法(抜粋))項番2のSQLインジェクションとは、データベースを利用するWebサーバへの攻撃用のコードを入力することで、データの改ざんなど不正な行為を行う攻撃です。
 攻撃用のコードは、入力値としてデータベースを操作するSQL分の構文として理解させるものになります。
 したがって、この対策には入力値をSQL分として理解させないようにすることが必要です。
 具体的には「select * from user-db where username=? and password=?」のように、SQL分に変数の場所を示す「?」記号を用いて表現します。
この「?」記号のことをプレースホルダ(placeholder)と言います。

a:改行コード

外部からの入力の全てについて、(a)を削除する。
 表1(脆弱性検査の方法(抜粋))項番3のメールヘッダインジェクションとは、メールを利用するWebサーバへの攻撃用のコードを入力することで、不正なメール送信などを行う攻撃です。
 この対策には入力されたデータについて、改行コードを削除することが挙げられます。
 そのほかには、表1にあるように、メールヘッダを固定値にすることや、外部からの入力を適切に処理するメール送信用APIを使用するなどが挙げられます。