第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アプリケーション設計
- Webアプリケーションフレームワーク
- マッシュアップにおけるセキュアプログラミング
- アクセス制御対策
- ユーザ認証対策
- アクセス許可対策
- サイトデザインにかかわる対策
- メールの第三者中継対策
- 真正性の主張
- セッション対策
- リクエスト強要(CSRF)対策
- セッション乗っ取り対策#1: セッションIDとその侵害手口
- セッション乗っ取り対策#2: セッションIDの強度を高める
- セッション乗っ取り対策#3: https:の適切な適用
- セッション乗っ取り対策#4: セッションIDお膳立てへの対策
- セッション乗っ取り対策#5: 乗っ取り警戒と被害の不拡大
- 予定外ナビゲーション対策
- 暴露対策
- Webサーバからのファイル流出対策
- プログラムからのファイル流出対策
- コンテンツ間パラメータ対策
- デバッグオプション対策
- プロキシキャッシュ対策
- 入力対策
- コマンド注入攻撃対策
- SQL注入 : #1 実装における対策
- SQL注入 : #2 設定における対策
- 入力検査漏れ対策
- エコーバック対策
- スクリプト注入(XSS): #1 対策
- スクリプト注入(XSS): #2 攻撃の解説
- HTTPレスポンスによるキャッシュ偽造