本書は、安全なWebアプリケーションを開発するための基本知識を、フロントエンドエンジニア向けに解説したセキュリティの入門書です。
これまでWebアプリケーションの開発で、セキュリティは「バックエンドの仕事」というイメージの強い領域でした。しかし、アプリケーションの安全性を高めるためには、フロントエンドエンジニアにも、セキュリティの基礎知識や具体的な対策の実践が求められます。
本書では、Webセキュリティの必須知識である「HTTP」「オリジン」などの基礎トピックや、「XSS」「CSRF」といったフロントエンドを狙ったサイバー攻撃の仕組みを、サンプルアプリケーションを舞台にしたハンズオンで学びます。
もちろん、攻撃からユーザーを守る防御の手法もしっかりおさえます。個々の攻撃手法に応じた対策のほか、「認証機能の実装」「JavaScriptライブラリの安全な使い方」など、開発現場で役立つ実践的な脆弱性対策もカバーしているので、自分の開発で取り入れられるセキュリティ向上のヒントが多く見つかるはずです。
■目次
第1章 Webセキュリティ概要
第2章 本書のハンズオンの準備
第3章 HTTP
第4章 オリジンによるWebアプリケーション間のアクセス制限
第5章 XSS
第6章 その他の受動的攻撃(CSRF、クリックジャッキング、オープンリダイレクト)
第7章 認証・認可
第8章 ライブラリを狙ったセキュリティリスク
Appendix 本編では扱わなかったトピックの学習
【著者】
●平野 昌士
サイボウズ株式会社 フロントエンドエンジニア
JSConf JPスタッフや関西Node学園といったコミュニティの運営を行う傍ら、OSS活動にも取り組んでおり、Node.js Core Collaborator(コミッター)に選出されている。WebとJavaScriptが好きでブログや雑誌の記事執筆、イベントでの講演など多数。
【監修】
●はせがわ ようすけ
株式会社セキュアスカイ・テクノロジー 取締役CTO
Internet Explorer、Mozilla FirefoxをはじめWebアプリケーションに関する多数の脆弱性を発見。 Black Hat Japan 2008、韓国POC 2008、2010、OWASP AppSec APAC 2014、CODE BLUE 2016他講演多数。
●後藤つぐみ
株式会社セキュアスカイ・テクノロジー セキュリティエンジニア
脆弱性診断業務に従事する傍らで、同社内の脆弱性診断員に向けた業務マニュアルの作成およびレビューをリードする。
第1章 Webセキュリティ概要
1.1 なぜセキュリティ対策を行うのか
1.2 Webの脆弱性の種類と傾向
第2章 ハンズオンの準備
2.1 準備をはじめる前に
2.2 Node.jsの設定
2.3 Node.js + Expressを使ったHTTPサーバの構築
第3章 HTTP
3.1 HTTP基礎
3.2 HTTPのハンズオン
3.3 安全な通信のためのHTTPS
第4章 オリジンによるWebアプリケーション間のアクセス制限
4.1 アプリケーション間でのアクセス制限の必要性
4.2 同一オリジンポリシー(Same-Origin Policy)による保護
4.3 同一オリジンポリシーによる制限のハンズオン
4.4 CORS(Cross-Origin Resource Sharing)
4.5 CORS ハンズオン
4.6 postMessageを使ったiframeをまたいだデータの送信
4.7 プロセス分離によるサイドチャネル攻撃の対策
第5章 XSS
5.1 能動的攻撃と受動的攻撃
5.2 XSS
5.3 XSS対策のハンズオン
5.4 Content Security Policy(CSP)を使った XSS 対策
5.5 CSPの設定ハンズオン
第6章 その他の受動的攻撃(CSRF、クリックジャッキング、オープンリダイレクト)
6.1 CSRF
6.2 CSRF対策のハンズオン
6.3 クリックジャッキング
6.4 クリックジャッキング対策のハンズオン
6.5 オープンリダイレクト
6.6 オープンリダイレクト対策のハンズオン
第7章 認証・認可
7.1 認証と認可の違い
7.2 認証機能のセキュリティリスク
7.3 アカウント作成フォーム実装ハンズオン
7.4 ログイン情報の漏えいに注意する
第8章 ライブラリを狙ったセキュリティリスク
8.1 ライブラリの利用
8.2 ライブラリに潜むセキュリティリスク
8.3 ライブラリ利用のセキュリティ対策
Appendix 本編では扱わなかったトピックの学習
A.1 さらにセキュリティを学ぶには
A.2 HTTPSハンズオン