第1章 総論
総論と対策の分類
Webアプリケーションに起こりうる問題
Webアプリケーションプログラムは、他のソフトウェアに比べて次のような特性をもつ。
- Webブラウザと Webサーバが緩く結合されたクライアント・サーバ構成をとる。
- ユーザインタフェースは、サーバから供給される HTML あるいはXMLの記述にもとづいて Webブラウザで動作する。ユーザは、HTMLソースを書き換えたり Webサーバに送られる HTTPリクエストの内容に手を加える等の機会をもつ。
- Webブラウザの多くは、ネットワークアクセスを含む高機能のプログラムを解釈実行できるスクリプトエンジンを備えている。
- Webブラウザと Webサーバの間の通信はプロキシサーバ等、キャッシュ機能をもつ設備によって中継されうる。
これらの特性から、Webアプリケーションにはいくつかの情報セキュリティ問題が生じがちである。それらは概ね次のように分類できる。
(1) 暴露問題
Webサーバは予定外のファイルを開示するおそれがある。また、あるWebコンテンツに埋め込まれたURLによって別のWebコンテンツを呼び出す際、そこに置かれたパラメータが重要な情報を暴露していしたり、干渉を受けるおそれがある。

図1-1: 暴露問題
(2) エコーバック問題
Webアプリケーションが入力パラメータをそのままHTMLページやHTTPレスポンスヘッダ中にエコーバック(鸚鵡返し(おうむがえし))するロジックをもつことは、スクリプト注入やHTTPレスポンスによるキャッシュ偽造の問題を許してしまう。

図1-2: 鸚鵡返し問題
(3) 入力問題
Webアプリケーションが取り込む入力パラメータにはSQL注入やコマンド注入をはじめとする攻撃を意図した悪意ある内容が含まれているおそれがある。

図1-3: 入力問題
(4) セッション問題
Webアプリケーションがセッションを維持する仕組みは必ずしも堅固なものではなく、他者からの干渉やセッションの乗っ取りのおそれがある。

図1-4: セッション問題
(5) アクセス制御
Webアプリケーションを構成するコンテンツのひとつひとつはそれぞれ URLで呼び出される形式をとるものであり、実装方法によってはアクセス制御が迂回されるおそれがある。

図1-5: アクセス制御の迂回
(6) その他の問題
上記以外にもメールの第三者中継や偽ページの問題がある。
近年のマッシュアップによる開発においても、技術動向を反映した問題がある。
Webアプリケーション編の記事の構成
ソフトウェア開発工程の流れおよび上記カテゴリをふまえ、「Webアプリケーション編」の構成は次のようになっている。:
- 総論
- 総論と対策の分類(本稿)
- 基礎知識の確認
- 開発工程と脆弱性対策
- より良いWebアプリケーション設計のヒント
- マッシュアップにおけるセキュアプログラミング
- アクセス制御
- ユーザ認証
- アクセス許可
- サイトデザインにかかわる対策
- フレームワークの選択
- メールの第三者中継対策
- 真正性の主張
- セッション対策
- リクエスト強要(CSRF)対策
- セッション乗っ取り対策#1: セッションIDとその侵害手口
- セッション乗っ取り対策#2: セッションIDの強度を高める
- セッション乗っ取り対策#3: https:の適切な適用
- セッション乗っ取り対策#4: セッションIDお膳立てへの対策
- セッション乗っ取り対策#5: 乗っ取り警戒と被害の不拡大
- 想定外ナビゲーション対策
- 暴露対策
- Webサーバからのファイル流出対策
- プログラムからのファイル流出対策
- コンテンツ間パラメータ対策
- デバッグオプション対策
- プロキシキャッシュ対策
- 入力対策
- コマンド注入攻撃対策
- SQL注入: #1 実装における対策
- SQL注入: #2 設定における対策
- 入力検査漏れ対策
- エコーバック対策
- スクリプト注入: #1 ふたつの攻撃
- スクリプト注入: #2 対策
- HTTPレスポンスによるキャッシュ偽造攻撃対策
- マッシュアップ
- WebサービスとマッシュアップAPI
- クライアント側マッシュアップ
- Webコンテンツの源泉概念
- サーバ側マッシュアップ
- マッシュアップとJavaScript
- セキュリティトークンとOAuth 2.0