Zuck3r’s Study

エンジニアではありません

「プロになるためのweb技術入門」を読みました(前編)

 初めに

こんにちは。Zuck3r(ザッカー)です。
現在、私はB2なのですが友人とあるwebアプリケーションを作るイベントに参加してお り、この際にしっかりweb技術についての知見を深めておこうと思い読むことにしました。また、とあるセキュリティ企業の1Dayインターンに参加させて頂いた際に、webの脆弱性診断体験をして面白いと思ったという事もあります。
以下が読んだ本のAmazonのリンクです。

「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか

「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか

本題

Lesson1~4を前半、Lesson5~7を後半として各レッスンで得たことをまとめていきたいと思います。

Lesson1:「Webアプリケーション」とは何か

この章は短いです。この内容は私も知っていました。主に、デスクトップアプリケーションとWebアプリケーションの違いについてですね。デスクトップアプリケーションだと、「Office、Photoshop...etc」でしょうか。Webアプリケーションだと、「はてなブログTwitter...etc」ですね。個人的にはWebアプリケーションのほうが使う機会が多い気がします。

Lesson2:Webはどのように発展したか

先ほどの章よりかは、長かったですね。"WWW"の話や、"サーバ"と"クライアント"についての話がありました。この点は学校で習っていたこともあり復習になりました。そして、動的コンテンツを表示するために編み出された"CGI"という技術。名前は、聞いたことがありましたが概要についてはしっかり把握していませんでしたが、動的に表示する部分を分け、その部分の処理を"Perl"や"C"に任せるのという事を知ることができ納得しました。"Javaサーブレット"から、"JSP"への発想の逆転には、”なるほど、確かにこれの方が効率がいいなと思いました"。

Lesson3:HTTPを知る

この章のページ数はLesson2より少し多いくらいでした。内容としては"HTTP"という通信プロトコルについてでした。通信プロトコルは自分で"WireShark"や"Postman""、"BurpSuite"を使い学んでいたので特に躓く点はありませんでした。まだ完璧ではないので、得られた知識ももちろんありました。メッセージヘッダについては曖昧にしか理解していなかったので、良い機会になりました。基本的に構造としては <フィールド名>:<フィールド値> となっています。以前、UserAgentを変えてフラッグを得るCTFの問題があったなと思いました。
ステータスコードについての内容もありました。"502 Bad Gateway"は日頃見かけたりすることもあるので知ってる人も多いかもしれません。"200 OK"等のグッドなステータスはよく返してくれているとは思うのですが、これ自体を見ることは少ないですね。
ウェルノウンポートは、やはり覚えておく方がいいと思います。自分は、半分勘みたいなところがあるので一応画像を貼っておこうと思います。

f:id:Zuck3r:20190917215847j:plain
ウェルノウンポート
最後に、最も重要だと思ったのは"GET"リクエスト、"POST"リクエストの違いです。GETだと、クエリ文字列が直接URLに書き込まれ危ないなと思ったのですが、確かにオープンな情報で、共有する時などにはGETの方が視覚的に分かり易いですね。”POST"リクエストはその点、パラメータをメッセージボディーに格納するので多少は安全になるのでしょう。しかし、セキュリティの勉強をしている身からすると、ここの通信が盗聴されてしまっては入力したパラメータがモロバレするので、やはりSSL/TLSによる暗号化は大切だなと思いました。

Lesson4:CGIからWebアプリケーションへ

内容が、より現代使われているwebアプリケーションに近くなってきました。ログイン機能の認証がどうなっているのかかについて紐解いていくところから始まりました。丁度、開発しているアプリのログイン機能について悩んでいたので、非常に為になりました。”クッキー"、"セッション"について解説していました。クッキーは比較的簡単に覗くことが出来るため、より安全に多くの情報を保持するためにセッションという仕組みが作られたと書いてありました。この本で利用した例のサイトでは"セッションID"はハッシュ関数で生成されていそうな感じでした。この章は、なるほどと思うことが多かったです。

最後に

まだ、読んでいる途中ではありますが近日中に後半についてもまとめたいと思っています。知ってることも多いのですが、初学者や基礎をバッチリ固めたい方には今のところおすすめの本と言えそうです。 最後までお読みいただきありがとうございました。