【ブックレビュー】フロントエンド開発のためのセキュリティ入門
これまで僕が書評を書いていたセキュリティ関係の本はインフラだったり、組織に対する内容だったりと、アプリケーションの実装に関連する本は少なかったように思えます。しかしシステム開発のメーンストリームであるアプリケーションのセキュリティ対策を知識として知ることは重要ですし、アプリ開発メンバーの連携協調してプロジェクトを進めるためにも、相手が何を言っているのかを理解することは必須のスキルです。 僕はかつてはソフトウェアエンジニアとしてシステム開発も携わっていたので、アプリに関する知見も多少はあります。それが今の仕事で有利に働いていることは間違いなく、この辺りは抜かりなく研鑽を続けていきたいと考えています。 本書籍はWebセキュリティの必須知識である「CORS」「XSS」「CSRF」などについてフロントエンドにhtml+JavaScript、バックエンドにnode.js+expressを用いて、実際に手を動かしながらブラウザ側とWebサーバ側のセキュリティ対策の実際の方法について学ぶことができます。本書にあるように、セキュリティ対策は自分で組み込むのではなくライブラリの利用が推奨されています。なぜならライブラリは多くのすぐれたエンジニアが安全、堅牢なセキュリティ対策を作り、メンテしてくれているモノなので、個人が実装するより絶対的に安全だからです。しかしライブラリを使う場合も、根幹の部分を知ることは大切です。 XSS対策にサニタイジング、というのはもはや当たり前であり、インフラエンジニアの自分でも当然知っている話でしたが、Webサーバ側でレスポンスヘッダに「「Strict-Transport-Security」や、OORSヘッダ「Access-Control-Allow-Origin」を付与して返すことについては知識を十分に持っておらず、たいへん参考になりました。 プリフライトリクエストについては最近仕事の中でアプリケーション開発者と会話で挙がったこともあり、「もっと早くこの本を読んでいれば」という感想でした。 Gemini: 具体的には、以下の条件のいずれかに該当する場合、ブラウザは自動的にプリフライトリクエスト(OPTIONSリクエスト)を送信します。 リクエストメソッドがGET、HEAD、POST以外の場合(PUT、DELETE、PATCHなど)。 POSTメソッドであっても、Content-Typeヘッダーがapplication/x-www-form-urlencoded、multipart/form-data、text/plain以外の場合(application/jsonなど)。 リクエストにカスタムヘッダーが含まれている場合(X-Custom-Header: valueなど) プリフライトリクエストの流れ ブラウザ: メインリクエスト(この場合はDELETEリクエスト)を送信する前に、OPTIONSリクエスト(プリフライトリクエスト)を送信します。このOPTIONSリクエストには、以下のヘッダーが含まれます。 Origin:...
2025, Feb 08 —