はじめに
「WEBアプリケーションの脆弱性診断」を行う際に、WEBの主要な通信プロトコルである**『HTTP』**の理解は必須になります。自己学習を通して学んだことを復習もかねてまとめてみました。
HTTPとは
ネットワークを使った通信を行うためには、お互いが決まった手順やデータの形式を守る必要があります。
そのあらかじめ、決められた**『約束事』のことを『プロトコル』**と呼びます。
WEBで主に使われているプロトコルは**『HTTP』**です。
TCP/IPとHTTPの関係
インターネットを含めた一般的に使われているネットワークは**『TCP/IP』**というプロトコルで動いています。
💻HTTPはそのうちの1つです!!
コンピューターネットワーク機器がお互いに通信するためのプロトコルには、様々なものがあります。
『ケーブルの規格』や『IPアドレスの指定方法』。。。
これらのインターネットに関連するプロトコルを集めたものを
**『TCP/IP』または『TCP/IP プロトコル・スイート』**と呼びます。
👇
※インターネットの関する様々なプロトコルの総称がTCP/IP!
階層
TCP/IPの重要な考え方の1つに**『階層』**というものがあります。
TCP/IPでは**『アプリケーション層』『トランスポート層』『ネットワーク層』『リンク層』**の4階層に分かれています。
TCP/IPで通信するとき、階層の順番を通って相手と通信を行います。
送信側👩は『アプリケーション層』から下っていき
受信側💻は『アプリケーション層』に上がっていく
👇
【イメージ図】
それぞれの階層を渡っていくときには、必ず階層ごとに「その階層」に必要な**『ヘッダー』**と呼ばれる情報をくっつけていく!
受信側ではそれぞれの階層を渡っていくときには、逆に必ずその階層ごとに使用したヘッダーを外していく!
このように情報を包み込むことを**『カプセル化』**といいます。
HTTPと関係深いプロトコル IP/TCP/DNS?
TCP/IPの中で、HTTPと関係が深いプロトコルが3つあります。
配送を担当するIP
IPは『ネットワーク層』
IP の役割は、個々のパケットを相手先まで届けることです。
※『IPアドレス』の役割は重要
信頼性を担当するTCP
TCPは『トランスポート層』
TCPは大きなデータを送信しやすいように細かく分解し、確実に相手に届いたかどうかを確認する役割を担っています。
名前解決を担当するDNS
DNSはHTTPと同じ『アプリケーション層』
主に**『ホスト名』や『ドメイン名』と『IPアドレスの名前解決』を提供します。
※名前解決とは、人間が覚えやすい「www.example.com」というドメイン名から通信に必要な「93.184.216.34」**というIPアドレスを検索することを指します。
シンプルなプロトコル≪HTTP≫
HTTPはTCP/IPの他のプロトコルと同様に**『クライアント』と『サーバー間』**で通信を行います。
※HTTPでは必ず片方が『クライアント』もう一方が『サーバー』の役割を担う!
クライアント👩から**『リクエスト』が送信され
その結果をサーバー💻が『レスポンス』**として返します。
ここでやり取りしているデータは、『HTTP メッセージ』と呼ばれていて
リクエスト側のHTTPメッセージを『リクエストメッセージ』
レスポンス側のHTTPメッセージを**『レスポンスメッセージ』**と呼びます。
HTTPは状態を保持しないプロトコル!?
HTTPは状態を保持しないステートレスなプロトコルです。
HTTPでは、プロトコル自身にリクエストとレスポンスのやり取りの間に**『ステート(状態)』**の管理が存在しません。
HTTPというプロトコルのレベルでは、以前に送ったリクエストや、送られたレスポンスについて一切記憶していません!
なので。。。
上記の内容を保持したいという要望に応えるために**『Cookie』**という技術が導入されています。
Cookieとは
Cookieとは**サイトを訪問した『ブラウザのデータを記録しておくための仕組み』**のことです。
詳しく説明すると。。。
Webサイトにアクセスした時に、WebサーバーからCookieがブラウザに送られ、ブラウザに保存される
次回同じwebサイトにアクセスした時、ブラウザ上のCookieがWebサーバーに送られ、サーバー側に保存されているユーザー情報とCookieが紐づきます。
👆
この仕組みにより、再度訪問した際に同一ブラウザであることが判定されます!
そのためCookieを活用してセッション管理を行うことで、**『状態を管理することが可能』**になります!
参考文献
書籍:Webセキュリティ担当者のための脆弱性診断スタートガイド
上野宣が教える新しい情報漏えいを防ぐ技術 第2版
著者:上野 宣
まとめ
今回は「脆弱性診断」を行う上で必要なHTTPに関すること簡潔にまとめてみました。
HTTPに関する知識も不十分だったため、今回の学習で基本は抑えられたと思います。