情報セキュリティスペシャリスト
情報技術者試験まとめへ

HTTP・Webアプリケーション(1)

HTTP

基本的な技術

HTTPメッセージの概要

HTTPでは、HTTPメッセージによってクライアントとサーバ間のデータ受渡しを行う

リクエスト:クライアント→サーバ
レスポンス:サーバ→クライアント

リクエスト行

HTTPメッセージの先頭行

(例)
 

ステータス行

HTTPメッセージの先頭行

主なステータスコード
コード説明
200OKリクエストが正常終了
301Moved Permanentlyページが恒久的に移動
302Foundページが一時的に移動
307Temporary一時的なリダイレクト
401Unauthorized認証が必要
403Forbidden要求の実行を拒否
404Not Found要求されたページが存在しない
500Internal Sever Errorサーバ内部でエラーが発生
503Service Unavailableサービスが一時的に使用不可

(例)
 

メッセージヘッダ

リクエスト/レスポンスの内容に応じたヘッダ情報が入る(HTTPのバージョンによって異なる)

主なヘッダ情報
情報説明リクエストレスポンス
Hostブラウザからサーバにサーバ名を送信する(必須)
Authorization認証方式や認証情報
Refererリンク元のURL情報
User-Agentブラウザの名称やバージョン情報
CookieクライアントがWebサーバに提示するクッキー
Dateメッセージが作成された日時
Content-Length返信するサイズ (バイト)
Content-Type返信するファイルや文字のタイプ
ServerWebサーバのプログラム名やバージョン情報
Set-CookieWebサーバがクライアントにセットするクッキー
Location次に参照させる先のURI情報
メッセージボディ

リクエスト時:
  POSTメソッド→サーバに送る情報が入る
  GETメソッド、HEADメソッド→なし
レスポンス時:
  リクエスト内容とその結果に応じてサーバが返す情報が入る

Webサーバとクライアント間のデータ受渡し手段

HTTPでは、ブラウザからの要求によってWebサーバ上のプログラムを起動する仕組みとしてCGIがある
入力データをCGIに引き渡す方法(メソッド)として、「GET」と「POST」がある

GETメソッド
POSTメソッド

URLエンコード

URL/URIのファイル名やクエリ文字列などの一部としては使用できない記号や文字を、使用できる文字の特殊な組み合わせによって表記する変換規則

Referrer(HTTPヘッダではReferer)

HTTPヘッダの1つ。アクセスログに記載されている情報のひとつで、当該ファイルを取得する(ブラウザで表示する)直前に閲覧していたページのURLを内容とする情報。どこからそのページに要求が来たのかを知ることができる。リファラをログすることでウェブサイトやウェブサーバで訪問者がどこから来ているかを把握でき、プロモーションやセキュリティの目的に使うことができる

Cookie

HTTPにおけるWebサーバとブラウザ間で状態を管理するプロトコル、またそこで用いられるブラウザに保存された情報のこと。ユーザ識別やセッション管理を実現する目的などに利用される

Cookieに設定する属性情報
属性・形式情報内容
expires=日時有効期限クッキーの有効期限を日時で指定する 指定がある:ブラウザが終了以降も有効期限まで保存 指定がない:ブラウザの終了後、消滅
domain
=ドメイン名
有効な
ドメイン名
クッキーが送信されるドメインを制御する
指定がある:ドメインで指定されたドメインとそのサブドメインにのみ送信
指定しない:Set-Cookieを送信したホストにのみ送信
※「.co.jp」「.com」「.net」などの指定は無効(未指定の扱い)
path
=ディレクトリ名
有効な
ディレクトリ名
ブラウザがクッキーを送信するサーバのパスを制御する
指定がある:URL内のパスがこれに前方一致する場合にのみ送信
省略した場合:アクセスしたURLに含まれるパスを使用
secureセキュア属性HTTPSで通信している場合にのみクッキーを送信
(盗聴によるクッキーの読取り防止)
httponlyhttponly属性クッキーをJavaScriptからアクセスできないように制限
(クッキーのXSS脆弱性による読取り防止)

セッションIDの受渡し手段

Cookies

最適だが、クライアントがCookieを受け入れない可能性がある

URLパラメータ

セッションIDを直接URLに埋め込む手法

hiddenフィールド

wwwブラウザに表示されない
Webページのソースを表示するとhiddenフィールドの内容は誰にでも参照できる

Webアプリケーションシステムの基本的構造

セッション管理の脆弱性と対策

対策と脆弱性

重要なセッション管理情報はすべてWebサーバ側で管理する
セッションIDを発行する際、ランダムで完全にユニークな値にし、暗号化する
1つのセッションが終了時・タイムアウト時に、セッション情報は破棄する
hiddenフィールドを利用時には、POSTメソッドを使用してデータ送信を行う
hiddenフィールドで重要なデータを取り扱うことは避ける
URLにセッション情報を含めない

Cookieの取り扱い方に留意する

Cookie情報は悪意あるユーザに漏洩してしまう危険性があるので、Cookieの管理には注意が必要である。(XSSの脆弱性により)

入力データに含まれるメタキャラクタのエスケープ処理を確実に行う
Webサーバで「URL Rewriting機能」を無効にする

意図的なセッション管理情報をクエリストリングにセットして使用することができる

セッション管理を確実に行う
ログイン後に新たなセッションIDを発行する

クロスサイトリクエストフォージェリ(CSRF)

利用者のブラウザによって、利用者の意図しないリクエストがWebサーバに送信され、ログイン中の利用者にだけ許可されたWebサイトの機能が勝手に実行される脆弱性。掲示板や問い合わせフォームなどを処理するWebアプリケーションが、本来拒否すべき他サイトからのリクエストを受信し処理してしまう

攻撃の手法・特徴

攻撃者は攻撃用Webページを準備し、ユーザがアクセスするよう誘導する ユーザが攻撃用Webページにアクセスすると、攻撃用Webページ内にあらかじめ用意されていた不正なリクエストが攻撃対象サーバに送られる
攻撃対象サーバ上のWebアプリケーションは不正なリクエストを処理し、ユーザが意図していない処理が行われる

影響と被害

攻撃者は自身が直接攻撃対象サーバへアクセスすることなく、攻撃対象のWebアプリケーションに任意の処理を行わせることができる

対策

サーバ側でCSRFを防ぐには、サイト外からのリクエストの受信を拒否する必要がある

HTTP(プロトコル)の仕様による脆弱性と対策

対策と脆弱性

重要な情報を取り扱うWebページではHTTPS(SSL/TLS)によって通信する
HTTPのベーシック認証は使用せず、フォーム認証かHTTPダイジェスト認証を用いる
認証を行う画面では必ずHTTPSを使用する
フォーム認証では認証情報はWebサーバで管理せず、
データベースなどを用いて管理する
フォーム認証

認証用の入力フォームを用いる認証方法

HTTPダイジェスト認証

WebサーバとWebブラウザなどの間でユーザ認証を行う方式の一つで、認証情報をハッシュ化して送受信する方式
ブラウザからサーバへユーザ名やパスワードなどをそのまま送らずに、その場で生成したランダムな文字列などとともにMD5などでハッシュ値に変換してから送る。サーバ側では予め登録されたユーザ名・パスワードなどから同様の手順でハッシュ値を計算し、両者が一致すれば認証成功とみなす

 

ページトップへ 次へ