CSRF 完全入門

1. この本が目指すところ

1.1. CSRF についての理解

第一に、CSRF について理解することを目指します。CSRF がどのような攻撃なのか、CSRF によってどのような被害が出るのかなどを学んでもらいたいです。 また、開発を行うときにどのようなことに気を付けるべきなのか、などの防御手法も学んでほしいです。そして、CSRF の学習を通して、ウェブセキュリティに触れたことがある、なんとなくどういう雰囲気かをわかっているというように、踏み出すことが難しい最初の一歩を踏み出したことがある状態になることを目指します。

1.2. CSRF の周辺知識についての理解

第二に、CSRF を理解するための周辺知識についても学べるようにします。 CSRF を理解するためには、ブラウザやフレームワークが備える防御機構まで含めて学ぶことが不可欠です。

たとえば CORS のエラーに遭遇したとき、エラーメッセージで検索をかけるだけで得られる情報は、断片的なものが多いです。

このような方式は、前提知識がある人にとっては簡潔でわかりやすい説明となりますが、背景知識が足りない初学者は置いてきぼりになってしまうことが多いです。たとえば、「クロスドメインのアクセスを制限する」という機能だけを伝えられても、CSRF を知らない人がその機能の目的について推測することは困難です。 そのため、本書では初学者にもわかるように、前提知識を学べるようにリンクを置いたり、必要があれば解説するなどの方式をとります。 また、初学者は抽象だけの説明だと想像がつかない場合が多いと思われることから、実際にコードを見て、手を動かしながら、攻撃と防御をセットに学んでいく方針をとります。

1.3. Web セキュリティの情報収集についての理解

第三に、どのように挙動を検証するのかや、どのような情報を参照すればいいのか、といったような、ウェブセキュリティについての学習を進めていくうえでのメタ知識のようなものを身に着けることも目的とします。 インターネット上には多様な情報が存在しますが、信頼できるとされている仕様書、ドキュメント、組織、あるいは個人の専門家などの、核となる情報源があるんだ、という雰囲気を知ってもらえればと思います。また、情報源が信頼できるか判断できない場合に、自分で検証することができることも知ってほしいです。

2. この本の対象者

上に述べた通り、初学者を対象としますが、まったくの初学者は対象ではないです。セキュリティに興味がある時点で、まったくの初学者である可能性は低いと思いますが。 具体的には、下の「前提とする知識」の項を参考にしてください。

3. 前提とする知識

HTML, CSS, JavaScript について、どのようなものかを理解して、ある程度読むことができる程度の知識は必要です。 また、ドメインやサーバーなどについての概要も前提とします。 具体的には、MDN の『ウェブ入門』を目安とします。 https://developer.mozilla.org/ja/docs/Learn/Getting_started_with_the_web

MDN は、ブラウザ Firefox を開発している mozilla が運営する、オープンソースのドキュメントです。特定のブラウザやプログラミング言語に特化せず、汎用的な知識を提供しているドキュメントで、ウェブに関する実用的な知識を得ることができます。また、日本語に翻訳されているページも多く、多くの知識を得ることができるでしょう。

4. 注意

この本に書いてあることを、他人が管理するサービスに対して無断で行うことは犯罪です。絶対にしてはいけません。 この本は、犯罪を助長するものではなく、自分のサービスを守るための知識を身に着けるという目的で書かれています。

5. 但し書き

情報源については、可能な限り公的機関が出しているものを参照します。また、有名企業やセキュリティの専門家として名が通っている人のブログなども参照します。 実際に運用しているときの情報や、最新すぎる情報では個人ブログを参照することがありますが、可能な限り自分の環境で検証を試みます。

また、この本に書かれていることの完全性は保証されません。私はセキュリティの専門家でもないため、この本で挙げられているような防御手法を回避する手段がないことや、防御の有効性を担保する前提を覆す脆弱性が存在しないことを保証できません。さらに、他の攻撃手法と組み合わせた場合の評価もできないため、CSRF の観点だけからみたら有効な防御手法だが、この攻撃手法と組み合わせれば突破できる、といった場合があるかもしれません。

6. さらに詳しく学びたい人のために

参考書籍・ウェブサイトを紹介します。

6.1. CSRF 自体について

6.1.1. Cross-Site Request Forgery Prevention - OWASP Cheat Sheet Series

https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html#double-submit-cookie

英語ですが、体系的でわかりやすくまとまっています。この本に挙げられていない、再認証や CAPTCHA といった手法も紹介されています。

6.1.2. 徳丸浩のウェブセキュリティ講座 - youtube

https://www.youtube.com/c/hiroshitokumaru/search?query=CSRF

徳丸先生の youtube チャンネルです。実際の画面をみながら解説してくださいます。ブログや書籍もおすすめです。

6.1.3. What is CSRF (Cross-site request forgery)? Tutorial & Examples | Web Security Academy

https://portswigger.net/web-security/csrf

英語ですが、まとまった解説があります。なにより、ハンズオン環境が用意されており、実際に手を動かしながら学ぶことができます。

6.2. 周辺知識について

6.2.1. 『Web ブラウザセキュリティ ― Web アプリケーションの安全性を支える仕組みを整理する』米内貴志 著

https://www.lambdanote.com/collections/wbs

ブラウザという視点からみた解説本です。ウェブアプリのコードではなくブラウザという視点から学ぶことでわかりやすく理解できると思います。

6.2.2. 『体系的に学ぶ 安全な Web アプリケーションの作り方 第 2 版』徳丸浩 著

https://www.sbcr.jp/product/4797393163/

ウェブアプリケーションの脆弱性について体系的にまとめた本です。実際のサンプル例とともに CSRF 以外の脆弱性も網羅的に解説されています。徳丸本と呼ばれています。

results matching ""

    No results matching ""