月間18,000PV達成! 収益は毎日発生中! 記事は毎日更新中! 今は農作業中のため東京にいるよ! ギランバレー症候群に関する情報を集めています

HTTPとは?リクエストとレスポンスをコードで理解しよう!

             
  • 2018.07.29
  • IT
HTTPとは?リクエストとレスポンスをコードで理解しよう!
Advertisement

 

セキュリティなどの知識を知る上で重要なもの、それがHTTPです。

HTTPを理解することは、セキュリティを理解することにつながります。

今回は、HTTPの基本を知るために、サーバへのリクエスト・レスポンス通信を具体的に見ていきたいと思います。

 

 

HTTPをまずは知る

冒頭でもお話しした通り、セキュリティを知る上で必要な技術としてHTTPが挙げられます。

このHTTPを知ることは、Webシステムの脆弱性を知ることにつながります

ですので、HTTPの基礎からしっかりと学んでいきましょう。

 

 

HTTP通信を覗いてみよう

さて、まずは以下のようなPHPを実行してみます。

 

画面の表示は以下のようになります。

php

 

この画面を表示した際に、ブラウザはサーバへの要求としてHTTPリクエストを送信し、サーバはブラウザへの返信としてHTTPレスポンスを返します。

HTTPのリクエストとレスポンス

 

HTTPの内容を覗く際に、今回は「OWASP ZAP」を利用しています。

HTTP通信の内容

 

 

リクエストメッセージとは

 

リクエストライン

リクエストライン

リクエストメッセージの1行目は「リクエストライン」と呼ばれています。

 

リクエストラインはWebサーバに対する命令を表しており、

・メソッド

・URL

・プロトコルバージョン

を空白で区切って表しています。

メソッドはGET以外にPOSTやHEADなどがあります。

 

ヘッダ

リクエストメッセージの2行目以降は「ヘッダ」と呼ばれるもので、名前と値をコロンで区切った形になっています。

ヘッダの内容で重要なのはHOSTだけです。HOSTはメッセージの送信先ホスト名(FQDN)とポート番号を表します(80の場合は省略可能)。

 

 

Advertisement

 

レスポンスメッセージとは

レスポンスメッセージはWebサーバから返された内容です。

 

レスポンスメッセージの構造は以下の通りです。

ステータスライン HTTP/1.1 200 OK
ヘッダ Server: nginx/1.10.3
Date: Sun, 29 Jul 2018 14:28:58 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 20
Connection: keep-alive
X-UA-Compatible: IE=edge
空行
ボディ <body>
23:28</body>

 

ステータスライン

ステータスライン

ステータスラインは、リクエストに対する処理結果のステータスを返します。

 

■ステータスコードの概要

ステータスコード 概要
1xx 処理が継続している
2xx 正常終了
3xx リダイレクト
4xx クライアントエラー
5xx サーバエラー

 

レスポンスヘッダ

レスポンスメッセージの2行目以降はヘッダになります。

以下が重要なものになります。

■Content-Length

ボディのバイト数を表します。

■Content-Type

MIMEタイプというリソースの種類を指定します。

 

以下は、主なMIMEタイプになります。

MIMEタイプ 意味
text/plain テキスト
text/html HTML文書
application/xml XML文書
text/css CSS
image/gif GIF画像
image/jpeg JPEG画像
image/png PNG画像
application/pdf PDF文書

 

 

HTTPは人間の会話と変わらない

HTTPは人の会話と変わりません。

今回で言うと、

「今何時?」

「〇時」

というやりとりをしているだけです。

ただし、人間のようにニュアンスを理解してくれるわけではないので、コードとしてリクエスト・レスポンスをしっかりと示してあげる必要があるわけです。

 

 

まとめ

今回はHTTPの基礎を理解しました。

初めての方にはとっつきにくいかもしれませんが、慣れてくると意外と簡単です。

僕も業務で見たりするようになってから苦手意識がなくなったので、慣れるように頑張りましょう!

 

 

おすすめ本

僕がセキュリティの勉強をする際に購入した本になります。

この本があれば、セキュリティの基礎は理解できるのでおすすめですよ!

 

Travelerを知らないの?