ウェブ・セキュリティ基礎試験(徳丸基礎試験)に合格することができました!(かなりギリギリですが)
学習期間は2週間ほどでしたが、試験対策のいわゆる「丸暗記」的な勉強ではなく、しっかりと内容を理解した上で合格できたと感じています。
そこでこの記事の前半では、ぼくがどうやって勉強したかを、後半ではこの試験を受ける価値があるのかについて話します。
この記事を書いているぼくは実務経験1年。独学で未経験から従業員300名以上の自社開発企業へ転職しました。実務ではVue.jsとRailsを毎日書いています。
ウェブ・セキュリティ基礎試験(徳丸基礎試験)とは?
試験の概要については公式サイトから引用します。
本試験の主教材はウェブ・セキュリティの名著として知られる徳丸浩氏による「体系的に学ぶ 安全なWebアプリケーションの作り方 第2版」を採用し、本書を基本的な出題範囲として基礎的な知見を問う試験と実務知識を問う試験を実施いたします。
https://www.phpexam.jp/tokumarubasic
つまり、いわゆる「徳丸本」の基礎的な理解を問う試験です。
ぼくのセキュリティに関する前提知識
- クロスサイトスクリプティング、SQLインジェクションなど聞いたことはあるが内容は全くわからない
- 「HTTPとHTTPSの違いは?」と聞かれて「HTTPは暗号化されてない、HTTPSは暗号化されている」といった程度の理解。暗号化の詳細は知らない
- セッションとクッキーの違いをぼんやりと理解しているが、面接で聞かれて理路整然とした回答ができるほどではない
- 実務ではフロントエンド・バックエンドの両方を担当しているからWeb開発の全体像はそこそこ理解できている、でもフレームワークがカバーしてくれてることも多いから、その中身までは分かってない
上記の感じです。
いわゆる「駆け出しエンジニア」の典型例かなと思っています。
受験しようと思った背景
「セキュリティの勉強をする機会を強制的に作り出したい!」というのが受験を決めた理由です。
試験日が決まっていれば、締め切り効果で勉強せざるを得ない状況が作り出せるかな、と考えました。
セキュリティ分野はWebエンジニアにとって重要な知識だとは認識しつつも、フレームワーク側でカバーしてくれることも多く、日々の業務ではなかなか意識しにくいです。
だから緊急性を感じられず後回しにしていたんですが、「いい加減やらないと」と思い、受験を決めました。
学習教材
学習に使った教材は主に3つです。
ウェブ・セキュリティ基礎試験は通称「徳丸基礎試験」とも呼ばれているように、徳丸本の内容をベースに構成されています。
そのため1の徳丸本を主教材としつつ、2と3は補助的に使った感じです。
学習の流れ
公式サイトには出題範囲が明記されており、徳丸本の第4章からは全40問中28問が出題されます。
なので最終的には第4章に出てくる様々な脆弱性をしっかりと理解することが大切です。
それを踏まえて以下の流れで学習を進めました。
- まずは第3章をしっかり読む
- 第4章のうち3つの脆弱性を完璧に理解する
- 第4章に出てくる他の脆弱性は3つの脆弱性のどれと近しいか考えながら読む
- 第5章もわりとしっかり読む
順番に詳しく話します。
1. まずは第3章をしっかり読む
「第4章が大事」と言ったばかりですが、第4章の内容を理解するには第3章で紹介されている知識が必要なので、まずは第3章をしっかり読むことが大切です。
ただ正直言って、第3章を読んでいる時点では第3章の内容はよくわかりませんでした、、。
第4章を読み進めるうちに「これってなんだっけ?」となって第3章に戻って読み直す… を繰り返して理解できました。
なのでこの段階で完全に理解するのではなく、一通り目を通したら第4章に進んで、第3章と第4章を行ったり来たりするのが良いですね。
2. 第4章のうち3つの脆弱性を完璧に理解する
第4章にはたくさんの種類の脆弱性が出てきます。
しかし、まず押さえるべきは次の3つです。
- クロスサイト・スクリプティング(XSS)
- SQLインジェクション
- クロスサイト・リクエスト・フォージェリ(CSRF)
この3つをきっちり理解しておけば、他の脆弱性は全てこの3つのどれかに似ているので応用が効きます。
たとえば徳丸本には「OSコマンドインジェクション」という脆弱性が出てきますが、これはSQLインジェクションと構造や対策はかなり共通しています。
どう勉強するか?
ぼくはこちらの記事を参考に、以下の4項目を自分なりに整理していました。
- その脆弱性はどういうことか?(概要)
- その脆弱性はどこで、どうやって発生するのか?(発生箇所・原因)
- その脆弱性が起きてしまったらどうなるか?(影響)
- その脆弱性はどうやったら防げるのか?(対策)
この3つの脆弱性に関しては徳丸本のハンズオンもしっかりとこなしました。
また、なるべく多面的な学習を心がけました。
実務ではRailsを使っているため、Rails セキュリティガイドと徳丸本を照らし合わせてRailsではどのような対策が施されているかを確認したりするなど、です。
調べた内容をブログにまとめたのも効果を実感しています。
このようにして、まずは3つの脆弱性をしっかりと理解しましょう。
参考:ぼくが書いた記事
3. 他の脆弱性は3つのうちどれと近いか考えながら読む
繰り返しになりますが、↓の脆弱性を理解できれば、他の脆弱性はこの3つのどれかに似ているものばかりです。
- クロスサイト・スクリプティング(XSS)
- SQLインジェクション
- クロスサイト・リクエスト・フォージェリ(CSRF)
なので第4章に出てくるたくさんの脆弱性が↑のどれと似ているか、を常に意識しながら読み、よく分からなかった脆弱性のみ、重点的に勉強していました。
全てをくわしくは覚えていませんでしたが、3つの主要な脆弱性さえマスターしていれば、テスト中に考えて正解を導き出せるかなと思います。
4. 第5章もわりとしっかり読む
徳丸本の第5章は認証・認可やアカウント管理、ログ出力に関する内容です。
ここからも40問中6問出題されるので、学ぶ価値ありです。
第5章の知識は試験対策とか関係なく、単純に実務でも直接役立ちそうな内容だったため、普通に一回読むだけでもかなり記憶に定着した印象があります。
Webエンジニアはウェブ・セキュリティ試験を受ける価値はあるか?
ぼくは受ける価値があると感じました。
理由は以下の2点です。
- 体系的にセキュリティの基礎を学べるから
- 期限を決めないといつまでも後回しにしてしまうから
1 に関して、この試験では丸暗記は通用せず、しっかりと内容を理解しているかが問われます。逆に内容をわかっていれば暗記はそこまで要らないです。基本的な脆弱性について中身を伴って勉強できる良い機会だったと感じています。
2 に関して、セキュリティの知識はWebエンジニアにとって重要ではあるものの、学んだからといって明日からすぐ実務で生かせる即効性はありません。そのためついつい後回しにしてしまっている人も多いはず。その点、試験を申し込んでしまえば期限が決まるため、短期集中で勉強せざるを得ない環境が手に入ります。その点でも意義はあると思いました。
まとめ
この記事ではウェブ・セキュリティ基礎試験へ向けた学習法と受験する意義について話しました。
最後におさらいです。
- 徳丸本の第3章をまずはしっかり読む
- 第4章に出てくる脆弱性は、まず主要な3つをしっかり理解する
- 第5章も実務を意識しながらちゃんと読む
- セキュリティを学びたいエンジニアにとってウェブ・セキュリティ基礎試験は価値あり
申し込んでみないと何も始まらないので、この流れでまずは日程を予約しましょう。
コメント