
こんにちは。虎の穴ラボの古賀です。
社内の技術書購入を支援する制度を利用して購入してだいぶ放置されていた『体系的に学ぶ 安全なWebアプリケーションの作り方 第2版』を読みました。
やっと読むことができたので、本書の概要とその中で良かったところや気になったところをご紹介します。
本書は、Webアプリケーションのセキュリティ対策を体系的に学べる定番書として有名な「体系的に学ぶ 安全なWebアプリケーションの作り方」の第2版。通称「徳丸本」と呼ばれる本書で初版(2011年2月)から約7年ぶりの改訂を経て、現在のWebを取り巻く環境の変化に対応されています。
どんな本か
Webアプリケーション開発者にとって現在は必須の知識であるセキュリティについて、基礎から実践までを網羅的に解説した一冊です。全9章、600ページを超えるボリュームで、脆弱性の原理、具体的な攻撃手法、そして対策方法を体系的に学ぶことができます。
初版からアップデートされた第2版では、HTML5やWeb APIの普及、近年の攻撃手法の変化といったWebを取り巻く環境の変化に対応。JavaScriptのセキュリティ、安全でないデシリアライゼーション、XXE(XML外部実体参照)など、初版にはなかったトピックが盛り込まれています。2018/6/21と少し前に発刊されていますが、現在でも変わらずセキュリティを学ぶ際にオススメの一冊です。
また、旧版で扱っていた携帯電話向けWebアプリケーションのセキュリティ対策に関する章は削除され、代わりに脆弱性診断の手法が学べる「脆弱性診断入門」の章が新設。脆弱性スキャニングや診断手法といった、より実践的な内容が追加されました。クリックジャッキングのような脆弱性に関する解説も加わっています。
基本情報
| タイトル | 体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 |
|---|---|
| サブタイトル | 脆弱性が生まれる原理と対策の実践 |
| 著者 | 徳丸 浩 |
| 発行日 | 2018/6/21 |
| 発行 | SB Creative |
| ISBN | 978-4-7973-9316-3 |
| 公式ページ | 体系的に学ぶ 安全なWebアプリケーションの作り方 第2版(SB Creative) |
本書の構成
本書は以下の9つの章で構成されており、段階的にWebセキュリティの知識を習得できるよう構成されています。
- Webアプリケーションの脆弱性とは: 脆弱性の定義、発生原因、被害、対策の重要性を解説。
- 実習環境のセットアップ: VirtualBoxを用いた仮想環境の構築手順を解説。
- Webセキュリティの基礎: HTTP、セッション管理、同一オリジンポリシー、CORSなど、Webセキュリティの基礎知識を解説。
- Webアプリケーションの機能別に見るセキュリティバグ: 代表的な脆弱性(XSS、SQLインジェクション、CSRFなど17種類)の原理と対策を機能別に解説。
- 代表的なセキュリティ機能: 認証、認可、セッション管理など、主要なセキュリティ機能の実装と注意点を解説。
- 文字コードとセキュリティ: 文字コードに関連するセキュリティ問題と対策を解説。
- 脆弱性診断入門: 脆弱性診断の種類、手法、ツールの利用方法を解説。
- Webサイトの安全性を高めるために: ファイアウォール、WAF、IDS/IPSなど、Webサイト全体のセキュリティ対策を解説。
- 安全なWebアプリケーションのための開発マネジメント: 開発プロセスにおけるセキュリティ対策、チームでの役割分担などを解説。
実践的な学びを支える豊富な工夫
本書の特筆すべき点は、読者の理解を深めるための工夫が随所に凝らされていることです。
豊富な図解
複雑なセキュリティの概念も、豊富な図解によって視覚的に理解することができます。特に、クロスサイト・スクリプティング(XSS)の説明で用いられている粗大ゴミ受付サイトに対するXSS攻撃の図解は、実際にXSS攻撃によってクレジットカード情報を盗む手法を理解するのに役立ちます。
また、銀行員との会話形式で解説したセッション管理に不備があった場合の攻撃概念の説明、理解が難しいCSRFの脆弱性に関する仕組みなどこの辺りは特に図解がわかりやすく良かったと思います。
充実した実習環境
VirtualBoxを用いた仮想マシンが提供されており、実際に手を動かして脆弱性を体験できます。サンプルアプリケーション「BadTodo」などを利用し、脆弱性を攻撃・検証することで、攻撃者の視点と防御者の視点の双方から理解を深めることができます。環境構築の手順も丁寧に解説されており、初心者でも安心して実習に取り組めます。
サンプルアプリケーションの「BadTodo」はGithubで公開されており、自由に触ることができます。
最新情報への対応
改訂により、HTML5、Web API、OWASP Top 10 2017※など、最新の技術や脅威に関する情報が盛り込まれています。自ら脆弱性診断を行うための脆弱性診断の章が新設されたこと、クリックジャッキングや安全でないデシリアライゼーション、XXEといった比較的、新しい脆弱性も解説されている点はWebセキュリティをより深く学ぶ上で有用と思います。
※ OWASP Top 10は、現在、2021が公開されおり、一部の順位の変更やいくつか新たに追加されただけで現時点でも有用な内容です。
幅広い読者層への配慮
Webアプリケーション開発者だけでなく、セキュリティ担当者、Webサイト運営者、Webセキュリティに興味のある学生まで、幅広い層にとって役立つ内容です。ただし、非エンジニアはHTMLやSQLの構文、専門用語など、難しい部分もあると思います。
エンジニアにとっては基礎知識から応用的な内容まで網羅されており、それぞれのレベルに合わせて学習できます。また、セキュリティ対策の基本を再確認し、実践における見落としを防ぐために役に立つと思います。
リファレンスとしての価値
明確な構成、各章の要約、前章への参照リンクなど、リファレンスガイドとしても非常に優れています。現場で問題に直面した際に辞書的にも参照できると思います。
現場で役立つ実践的な知識
技術者にとって、脆弱性の原理から対策まで、深く掘り下げた解説は、単なる知識の詰め込みではなく、「なぜ脆弱性が生まれるのか」を理解し、本質的な対策を講じる力を養えると思います。
第9章の開発マネジメントに関する内容は、チーム開発におけるセキュリティ対策の指針となります。
セキュリティ要件定義、設計時の注意点、テスト手法、運用上の注意点など、開発プロセス全体を通してセキュリティを組み込むためのノウハウが詰まっており、組織的なセキュリティ強化に貢献します。
旧版からの進化:現代の脅威に対応
第2版への改訂は現代のWebセキュリティ環境への適応という点を中心に進化しています。
- 脆弱性診断入門(第7章)の新設: 脆弱性診断ツールの活用方法を解説、現場のエンジニアが脆弱性スキャンツール(Nmap、OpenVAS、OWASP ZAP、RIPS)で脆弱性診断の実践に繋ぐ。
- 最新脆弱性への対応: クリックジャッキング、安全でないデシリアライゼーション、XXEなど、近年の脅威動向を反映した内容が追加。
- モバイル環境の刷新: モバイル固有の話題から、より普遍的な脆弱性診断へとシフト。
- 開発環境のアップデート: VirtualBox、OWASP ZAPなど、現代の開発環境に合わせたツールやプラットフォームへの対応。
これらの改訂により、第2版は現代のWebセキュリティに必要な知識を網羅的に学べます。
本書の強みと弱み
強み
- 網羅性と体系性: Webアプリケーションのセキュリティリスクをほぼ全て網羅。基礎から実践まで体系的に学べる構成。
- 実践的な解説: 攻撃の原理から具体的な対策まで踏み込んだ解説。脆弱性が生まれる原因を理解し、本質的な防御策を講じる力を養う。
- 豊富な実習環境: 仮想マシンを用いた実習環境で、手を動かしながら体験的に学習可能。
- 最新情報への対応: 最新の技術、脅威動向、脆弱性診断手法を網羅。
- 幅広い読者層: Web開発者、セキュリティ担当者、運用担当者など、Webに関わる全ての人に役立つ内容。
- リファレンス価値: 明確な構成と索引で、辞書的に参照可能。
弱み
- ボリューム: 600ページを超える大ボリューム、通読には時間と根気が必要。
- 学習コスト: 技術用語や前提知識が多く、全くの初心者には難易度が高い。用語や基礎知識は適宜補完しながら読み進める必要。
おすすめできる読者層
本書は、HTTPとは?から始まっており開発者だけでなく、Webアプリケーションの開発に関わる全ての人におすすめできます。
- Webアプリケーション開発者(フロントエンド、バックエンド)
- セキュリティエンジニア
- QAエンジニア
- インフラエンジニア
- サーバ管理者
- Webサイト運営者
- プロジェクトマネージャー
- Webセキュリティに関心のある学生、非エンジニア
エンジニアだけはなく、自社サービスのセキュリティ品質に責任を持つプロジェクトマネージャーにとっても必読の一冊です。
エンジニアの成果物に対してのセキュリティ的な品質の確認などを行うマネージャー層でも設計フェイズの話や脆弱性の概念からの話が多く、コードが読めなくても有用では?と思います。
ただし、完全な非エンジニアの場合はHTMLやSQL、その他の専門用語などの解説まではないので、その部分は調べるか他書を読みながらか、または概念だけを理解する形になると思います。
まとめ
「体系的に学ぶ 安全なWebアプリケーションの作り方 第2版」は、Webセキュリティを体系的に学ぶための圧倒的な情報量と実践的な解説、そして最新情報への対応により、Webセキュリティに関わる人にとって必読と考えます。
ボリュームの多さというハードルはありますが、それを乗り越える価値は十分にあると思います。 難しい場合は興味がある箇所や関わりがある箇所だけを読み進めて少しづつ範囲を広げて、困ったときの辞書的に使うのも良いのではないでしょうか。
Fantia開発採用情報
虎の穴ラボでは現在、一緒にFantiaを開発していく仲間を積極募集中です!
多くのユーザーに使っていただけるtoCサービスの開発をやってみたい方は、ぜひ弊社の採用情報をご覧ください。
toranoana-lab.co.jp