Don't Repeat Yourself

Don't Repeat Yourself (DRY) is a principle of software development aimed at reducing repetition of all kinds. -- wikipedia

『フロントエンド開発のためのセキュリティ入門』を読んだ

『フロントエンド開発のためのセキュリティ入門』という本を読んだので、簡単にどのような内容だったかをまとめておきたいと思います。

内容について

フロントエンド開発で必要になるセキュリティ面の知識を体系的に得ることができます。対象としてはフロントエンドエンジニアになって1年目〜3年目くらいの若手向けのようなことが本書のどこかに書いてあった気がしますが、フロントエンド歴の短い私のようなエンジニアが最初さらっと入門するのにちょうどよい塩梅だと思いました。

一方で深めの内容は意図的にカットしてあるか別の書籍を参照するように誘導がなされています。フロントエンド歴は短いもののバックエンドの歴は比較的長めな私のようなエンジニアが入門する際には、少し物足りないと思ってしまうかもしれません。購入の際にはご自身が想定読者に含まれるかは検討したほうがよいかと思いました。

ハンズオンがあったのはとても嬉しかったです。まずセキュリティバグが含まれるコードを書いてみて、そのあと本書の中で解説していた対策をもとに実際にセキュリティリスクを潰していくことができます。ハンズオンは Node.js を使用します。

構成としては、いくつかの導入ののちにまず HTTP の解説が行われます。その後はいわゆる CORS 周りの話、XSSCSRF、クリックジャッキング、オープンリダイレクトの話が続きます。認証認可周りのセキュリティリスクを確認したのち、近年話題に上ることの多いサプライチェーンアタックに関連する話が続きます。

目次は下記です(翔泳社のサイトより引用)。

第1章 Webセキュリティ概要
第2章 本書のハンズオンの準備
第3章 HTTP
第4章 オリジンによるWebアプリケーション間のアクセス制限
第5章 XSS
第6章 その他の受動的攻撃(CSRF、クリックジャッキング、オープンリダイレクト)
第7章 認証・認可
第8章 ライブラリを狙ったセキュリティリスク

感想とか

読んだ動機としては、しっかりめのフロントエンド開発をする必要が出てきたからでした。フロントエンド周りの開発はこれまでも何度か経験はあり、本書に出てくる用語のほとんどは直面したことがあるか、聞き馴染みがあるか、調べたことがあるかのどれかでした。が、改めて書籍でしっかり説明されると体系的に自分の知識を整理することができ、よい読書になったなと思っています。

とくにその場しのぎの理解で終わっていたなと思っていた箇所は

  • Content Security Policy に関するもの
  • SameSite Cookie に関するもの

あたりで、昔業務で直面して対策をした記憶はあるのですが、改めて何がダメで、防げると何が嬉しくて…といった点を整理できました。

ハンズオンはとりあえず興味があったり、「そもそもこの言葉を知ってはいるけど、具体的になんだっけ」と思った箇所を中心に取り組み中です。書籍の手順をそのままさらうだけで再現できたのもよかったです。

現実のアプリケーションでの発生事例はもう少し詳し目に載っていると、より実感が湧いてよかったかもなとは思いました。というか知りたかったと思いました。もちろん調べればいくらでも出てくるのですが。たとえば「こういう会社でどういう事例があって、どのくらいの影響(売り上げやユーザー数など)があったか」などを軽く紹介してもらえると、深刻度合いがより伝わってよくなったかもなとは感じました。