XSSやSQLインジェクションという言葉は知っているし、対策のフレームワークも使っている。でもなぜその対策が必要なのか、脆弱性がどういう仕組みで生まれるのかを説明しろと言われると、あやふやなまま止まっている。『体系的に学ぶ 安全なWebアプリケーションの作り方 第2版』は、その「なぜ」を実際の攻撃例から理解させてくれる、セキュリティ本の定番だった。
PHPサンプルへの攻撃を通じて原理を学ぶ
本書は実習環境をセットアップしたうえで、PHPのサンプルコードに対する具体的な攻撃を通して、脆弱性がどう生まれるかとその対処法を学んでいく構成になっている。HTTP、セッション管理、同一オリジンポリシー、CORSといったWebセキュリティの基礎から、機能別のセキュリティバグ、代表的なセキュリティ機能へと段階的に積み上がっていく。
脆弱性診断と開発マネジメントまで視野に入れた第2版
第2版ではHTML5の普及に合わせてWeb APIやJavaScriptの解説が新設され、OWASP Top 10 - 2017に対応してXXEや安全でないデシリアライゼーションといった話題も加わっている。脆弱性診断入門の章や、安全なWebアプリケーションのための開発マネジメントの章まであり、コードレベルの対策だけでなく組織としての取り組み方まで扱っているのが特徴だ。
読んでよかったポイント
- 実際の攻撃を手元で再現しながら読み進めるので、対策コードの意味を体で理解できた
- セッション管理と同一オリジンポリシーの章が、フレームワーク任せにしていた部分の中身を初めて理解する機会になった
- 文字コードとセキュリティの章は、普段ほとんど意識していなかった盲点に気づかせてくれた
- 脆弱性診断入門の章が、外部の診断レポートを受け取ったときに内容をきちんと読み解けるようになる助けになった
- 開発マネジメントの章が、セキュリティを個人の頑張りではなくチームの仕組みとして扱う視点を与えてくれた
さらに広げて読むなら
脆弱性対策をコードレベルだけでなく現場の運用として広げて考えたいなら、脆弱性対策が場当たりになりがちな人へ。Webアプリの守り方を実践で整理できる一冊も合わせて読むと、原理と運用の両面から理解が深まる。
まとめ
セキュリティ対策は、仕組みを理解して初めて自分の言葉で説明できるようになる。まずは自分がよく使っているフレームワークのセキュリティ機能を一つ、この本の該当章と照らし合わせて読み直してみてほしい。