BETA

QAエンジニアが徳丸本に挑む①

投稿日:2020-03-20
最終更新:2020-03-20

ご挨拶

カヤです。技術ブログのはずなのに技術記事は初投稿となります。
(ログは……書いてたんですよ……たまに……)

今までテストエンジニアとしては機能試験ばっかりだったのですが、
この度、先輩の指揮の下、社内プロジェクトを回ってセキュリティ試験をやるという大役を拝命しました。
が、何か問題(っぽいもの)が見つかる度、「せんぱ~~い」と聞くしかない状態なので、ここはセキュリティについて腰を据えてお勉強しようと決意しました。

そこで買ってきたのがこちらです!

安全なWebアプリケーションの作り方 第2版」、通称「徳丸本」です!
いやぁ、分厚い! 旦那からは「いい漬物石になりそう」ってありがたいコメントを頂きましたよ!!

……若干後悔しかけましたが、頑張って読んでいこうと思います。
この記事は読んで分かったことを書き綴っていくものです。
間違っていたらご指摘ください。

第一章

前書きなので割愛。
「"脆弱性"とは"悪用できるバグ"」という説明は覚えておこうと思います。
難しいですよねぜいじゃくせい。

第二章

ハンズオン環境のセットアップになります。

公式DLサイトがNorton先生チェックに引っかかったり、
Hyper-VさんがVirtualBoxさんと領土争いを始めたりしましたが、
何とか無事(?)、サンプルWebアプリを脆弱性診断ツールで探索できるようになりました。

手厳しいNorton先生


仮想マシン上にサンプルアプリを立ち上げ、OWASP ZAPを通した

第三章

Webセキュリティの基礎

前提知識となる部分です。
セキュリティだけでなく「リクエストとは何ぞや」みたいなWebの仕組みから説明してくれてます。
「見たことあるけど何て呼ぶのか知らない」や、「聞いたことあるけど実際なんなのか分かってない」が解消されてスッキリしました。

HTTP/1.1 200 OK  

レスポンスの頭にいるコイツは「ステータスライン」

name=%E6%9E%AF%E5%B1%B1  

これは「パーセントエンコーディング」された日本語パラメータ

Referer
リンク元を示すヘッダ情報、は知ってましたが、form要素やimg要素にも付いてくるのはメモメモ。
改ざんしようと思えばできてしまうので、頼りすぎはNG。

HTTPのステートレス性
ステートレス、って言葉は知っていても、「HTTPはステートレスだから、クライアントの状態を覚えておくのにhiddenパラメータを使用する実装がある」みたいな理解はできていなかったのでメモ。
「ログイン状態」と呼んでいるものは、実際にはブラウザが毎回認証情報を送っているだけ。

クッキー
ログイン情報を覚えてくれてるやつ、みたいな適当な理解でした。
よくある使い道は、「整理番号」としてセッションIDを格納しておき、そのIDを元にサーバサイドで管理しているセッション情報を取り出す、と。
セキュリティ上注意すべき属性に、Domain・Secure・HttpOnly・SameSiteがある。

プリフライトリクエスト
クロスオリジンなリクエストを送る時に、「こんな複雑なことするけど本当にいいの?」ってブラウザが確認してくれること。ちゃんとアプリ側が返事しなければ、リクエストは差し止めされる。

非開発者だとこういう用語が微妙に分からなくて、開発者と会話するときに苦労するんですよね。
弊社の開発現場でこういう言い方してるかはさておき。

最後に、セキュリティ面で理解したことを軽く書き留めて、この記事は終わりにします。
次から本編(?)となるセキュリティバグの章に入っていきます。

  • GETはパラメータから情報漏洩リスクがあるため、秘密情報を送信する場合は参照であってもPOSTを使う
  • hiddenパラメータは外部からの改ざんに強く、セッション変数は利用者本人の改ざんに有用
  • セッション管理は実績のある開発ツールを利用すべき
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

QA、DevOps系のお勉強記録。たまにライフハック系の話もするかも(技術とは?)

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう