ソフトバンククリエイティブ友保様より献本御礼。

初出2011.02.24; 2011.10.05 電子版へのリンクを追加

こういう本を待っていた。Web制作に関わる全ての人、必携。

と同時に言っておきたいのは、安全なWebアプリケーションを作るにあたって、本書の内容はあくまで必要条件であって充分条件ではないということ。原理的に。

なぜか。

あなたのWebサイトで何が出来てはならないかは、あなたにしか決められないからだ。

本書「体系的に学ぶ 安全なWebアプリケーションの作り方」は、副題に「脆弱性が生まれる原理と対策の実践」とある通り、体系的かつ実践的にWebアプリケーションから脆弱性を取り除き安全にする方法を学ぶ一冊。

目次 - ソフトバンク クリエイティブ:体系的に学ぶ 安全なWebアプリケーションの作り方より
1章 Webアプリケーションの脆弱性とは
1.1 脆弱性とは、「悪用できるバグ」
1.2 脆弱性があるとなぜ駄目なのか
1.3 脆弱性が生まれる理由
1.4 セキュリティバグとセキュリティ機能
1.5 本書の構成
2章 実習環境のセットアップ
2.1 実習環境の概要
2.2 VMware Playerのインストール
2.3 仮想マシンのインストールと動作確認
2.4 Fiddlerのインストール
3章 Webセキュリティの基礎 〜HTTP、セッション管理、同一生成元ポリシー
3.1 HTTPとセッション管理
3.2 受動的攻撃と同一生成元ポリシー
4章 Webアプリケーションの機能別に見るセキュリティバグ
4.1 Webアプリケーションの機能と脆弱性の対応
4.2 入力処理とセキュリティ
4.3 表示処理に伴う問題
4.4 SQL呼び出しに伴う脆弱性
4.5 「重要な処理」の際に混入する脆弱性
4.6 セッション管理の不備
4.7 リダイレクト処理にまつわる脆弱性
4.8 クッキー出力にまつわる脆弱性
4.9 メール送信の問題
4.10 ファイルアクセスにまつわる問題
4.11 OSコマンド呼び出しの際に発生する脆弱性
4.12 ファイルアップロードにまつわる問題
4.13 インクルードにまつわる問題
4.14 evalにまつわる問題
4.15 共有資源に関する問題
5章 代表的なセキュリティ機能
5.1 認証
5.2 アカウント管理
5.3 認可
5.4 ログ出力
6章 文字コードとセキュリティ
6.1 文字コードとセキュリティの概要
6.2 文字集合
6.3 文字エンコーディング
6.4 文字コードによる脆弱性の発生要因まとめ
6.5 文字コードを正しく扱うために
7章 携帯電話向けWebアプリケーションの脆弱性対策
7.1 携帯電話向けWebアプリケーションの技術的特徴
7.2 携帯ブラウザの技術仕様
7.3 かんたんログインの問題
7.4 URL埋め込みのセッションIDによる問題
7.5 その他の問題
8章 Webサイトの安全性を高めるために
8.1 Webサーバーへの攻撃経路と対策
8.2 成りすまし対策
8.3 盗聴・改ざん対策
8.4 マルウェア対策
9章 安全なWebアプリケーションのための開発マネジメント
9.1 開発マネジメントにおけるセキュリティ施策の全体像
9.2 開発体制
9.3 開発プロセス

著者のid:ockeghemはこの件に関してすでにいくつもの記事を上げている有名ブロガーであるが、著書はこれがはじめてのようである。しかし以下の査読者リストを見るだけで、本書が「プロの犯行」であることは疑いようがない。

「体系的に学ぶ 安全なWebアプリケーションの作り方」3月1日発売です - ockeghem(徳丸浩)の日記
大崎雅幸、太田良典、かいと(kaito834)、加藤泰文、小邨孝明、坂井隆二、id:s-yo-ko、高木正弘*1、竹迫良範、東内裕二、塙与志夫、日野洋一郎、山崎圭吾、山下太郎、Masahiro Yamada(masa141421356)、山本陽平

さらに本書がすばらしいのは、脆弱性の体験まで出来るようにしてあること。本書にはそのためにVMWare Playerと実習用の仮想環境がCD-ROMで添付されている。「いまさらCD-ROM添付はないよなあ」というのは一般論としては正しいが、本書に関してはこれが正解。あえて脆弱な環境を配布するのだから。Windows用ではあるが、仮想環境である WASBOOK.ZIP(207MB )を unzip して得られる仮想マシンは Mac OS X の VMWare Fusion 3 でも動作した。

それにしても、脆弱性との戦いはなぜこうも終わらないゲームなのだろうか。

それは、おそらく我々人類の根源的な性だと思われる。

我々は「やりたいことをできるようにする」ことには懸命かつ賢明でも、「やられてはならないことをやられないようにする」ことにかけては懸命にも賢明にもなれないのだ。

もちろんその度合いは個人差がある。私自身は「人類平均」よりよほど前者よりだと思う。著者や査読者諸氏と比べれば、なおのこと。しかしその彼らですら、「できるようにする」方が「できないようにする」ことよりよほど上手であると私は見ている。脆弱性の発見自体、「あいつらにとってやられてはならない」ことを「おれたちはやりたい」から見つかったというものばかりではないか。

ゆえに、脆弱性に特効薬はない。

だからこそ早期治療と再発防止は効果覿面だ。

本書に乗っているのは、現時点におけるプロとして最低限できなければならない早期治療と再発防止の具体策だ。未読が許されるのは小学生までだよねー。いやまぢで。

Dan the Vulnerable by Nature, Secured by Trade