SlideShare a Scribd company logo
1 of 23
HTTP基礎入門
2017/05/27
Burp Suite Japan User Group
• HTTP(HyperText Transfer Protocol)
情報の転送プロトコル(通信規約)
• URL(Uniform Resource Locator)
情報の場所を指し示す書式
• HTML(HyperText Markup Language)
情報を表現する文書フォーマット
Webを構成する3つの技術
1
Webページにアクセスする時
サーバークライアント
閲覧したいページのURLを入力
結果としてコンテンツが表示される
要求
応答
http://www.example.com
http://www.example.com
2
実際はこんな通信をしています
サーバークライアント
HTTP Request
HTTP Response
GET / HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101
Firefox/41.0
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ja,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
HTTP/1.1 200 OK
Date: Sun, 25 Oct 2015 18:06:18 GMT
Content-Length: 96
Connection: close
Content-Type: text/html; charset=UTF-8
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
Hello World!
</body>
</html>
http://www.example.com
http://www.example.com
3
HTTPについて
理解を深めよう!
4
• HTTP/0.9:1991年~
• HTTP/1.0(RFC 1945):1996年~
• HTTP/1.1(RFC 7230 ~ 7235):1997年~
• HTTP/2 (RFC 7540):2015年~
いくつかプロトコルバージョンがある
コレの話
5
• スキーム名
アクセスするプロトコルを指定する部分(http,https,ftp…)
• ホスト名
アクセス先のホスト名(FQDN,IPアドレス)を指定する部分
接続先のポート指定もできる。(例:http://www.example.com:8080)
• ファイルパス
取得したいリソースのファイルパスを指定する部分
• クエリー文字列
ファイルパスで指定するリソースに対して渡す文字列
URLの構造
http://www.example.com/member/index.html?id=user
スキーム ホスト名 ファイルパス クエリー文字列
6
• 特殊記号や日本語などURLに使用できない文字を
URL上に記述する場合に用いられる
• バイト単位で「%xx」という形式で表される
※xxは16進数表記
パーセントエンコーディング
http://www.example.com?id=%82%D9%82%B0
「ほげ」という文字をエンコードした値
7
リクエストとレスポンス
サーバークライアント
①HTTP Request
②HTTP Response
必ずクライアント側からリクエストが送信され
サーバー側からレスポンスが返される
※HTTP1.1の場合
8
HTTPリクエストの構造
POST /login.php HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101
Firefox/41.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ja,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://www.hoge.co.jp/login.php
Cookie: PHPSESSID=4oqiftb4gc294fbfgkd0m4cfa4
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 21
id=user&pass=password
リクエストライン
ヘッダーフィールド
空白行
メッセージボディ
9
リクエストラインの構造
POST /login.php HTTP/1.1
メソッド リクエストURL プロトコルバージョン
メソッド名 内容
GET データを取得することをWebサーバーに要求
HEAD
データそのものは要求せず、メッセージヘッダーだ
けを取得することをWebサーバーに要求
POST Webサーバーに、データを送信
PUT Webサーバーに、ファイルをアップロード
DELETE Webサーバー上にあるデータを削除することを要求
OPTIONS サポートしているメソッドの取得
TRACE 自分宛にリクエストメッセージを返す
CONNECT プロキシサーバーなどに、トンネルの確立を要求
10
HTTPレスポンスの構造
HTTP/1.1 200 OK
Date: Sun, 25 Oct 2015 18:06:18 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Sun, 25 Oct 2015 17:54:17 GMT
Accept-Ranges: bytes
Content-Length: 96
Connection: close
Content-Type: text/html; charset=UTF-8
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
Hello World!
</body>
</html>
ステータスライン
空白行
ヘッダーフィールド
メッセージボディ
11
ステータスラインの構造
HTTP/1.1 200 OK
プロトコルバージョン ステータス
コード
テキスト
フレーズ
ステータスコード 概要
100番台 処理が継続している
200番台 正常終了
300番台 リダイレクト
400番台 クライアントエラー
500番台 サーバーエラー
12
HTTPは基本的にはステートレス
サーバークライアント
前の通信状態は引き継がない
お互い関係ない独立したもの
1回目のHTTP通信
2回目のHTTP通信
13
•ショッピングカートに入れた商品情報
• ログイン後のユーザの認証状態
…etc
でも状態を保持したい場合も多い
14
セッション管理
サーバークライアント
HTTP通信を関連づけて
処理することが可能
セッションIDを発行
セッションIDを送信
1回目のHTTP通信
2回目以降のHTTP通信
15
• サーバーがユーザーのブラウザに一時的に情報を保
存する仕組み
• アクセスのたびに適切なCookieがサーバーに送信
される
Cookie
16
Cookieを利用したセッション管理
サーバークライアント
POST /login.php HTTP/1.1
Host: www.example.com
(略)
id=user&pass=password
HTTP/1.1 302 Found
Set-Cookie: sessionid=2d84e80feb2749d;
(略)
ログイン認証
セッションIDを発行
GET /top.php HTTP/1.1
Host: www.example.com
Cookie: sessionid=2d84e80feb2749d;
(略)
HTTP/1.1 200 OK
(略)
セッションIDを照合
セッションIDに
対応する結果を返す
ブラウザに
Cookieをセット
ブラウザがCookie
を送信
7927d0cd79707f9
14f93fff42d395ee
2d84e80feb2749d
セッションID
を格納
http://hoge.co.jp
http://hoge.co.jp
http://hoge.co.jp
○○さんようこそ!
ID:
PASS:
login
17
Local Proxy Tool
18
• 他のコンピュータの「代理」として他のサーバーと
通信するサーバー
• 通信の効率化やセキュリティ向上などを目的として
よく利用される
一般的なProxyサーバ
HTTP Response
HTTP Request HTTP Request
Proxy サーバー
HTTP Response
クライアントはProxy サーバーとやり取り Proxy サーバーは目的のサーバーとやり取り
クライアント サーバー
19
Local Proxy Tool
Local Proxy
HTTP Request
HTTP Response
ブラウザ
HTTP Request
HTTP Response
クライアント環境
サーバー
• クライアントのLocal環境で動作するProxy
• 通信内容の詳細を確認できる
• 通信内容を編集して送信することもできる
20
HTTPSは通信が暗号化されている
HTTP
HTTPS
??
21
暗号化通信の中身も見ることが可能
クライアント サーバ
Local Proxy
Local Proxyの
SSL証明書
本物のサーバの
SSL証明書
• Local Proxy上で、暗号化通信を複号するため
HTTPSの通信もHTTP同様に閲覧、編集が可能
• クライアントはLocal ProxyとSSL通信を行うため、
デフォルトでは証明書エラーが発生する
22

More Related Content

What's hot

脆弱性診断とはなんぞや
脆弱性診断とはなんぞや脆弱性診断とはなんぞや
脆弱性診断とはなんぞや
mkoda
 
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
abend_cve_9999_0001
 
フリーでできるWebセキュリティ(burp編)
フリーでできるWebセキュリティ(burp編)フリーでできるWebセキュリティ(burp編)
フリーでできるWebセキュリティ(burp編)
abend_cve_9999_0001
 
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション
Enpel
 

What's hot (20)

徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティ徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティ
 
脆弱性診断とはなんぞや
脆弱性診断とはなんぞや脆弱性診断とはなんぞや
脆弱性診断とはなんぞや
 
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
 
フリーでできるWebセキュリティ(burp編)
フリーでできるWebセキュリティ(burp編)フリーでできるWebセキュリティ(burp編)
フリーでできるWebセキュリティ(burp編)
 
Linux KVMではじめるカンタン仮想化入門
Linux KVMではじめるカンタン仮想化入門Linux KVMではじめるカンタン仮想化入門
Linux KVMではじめるカンタン仮想化入門
 
Burp番外編~バープ、チョトニホンゴデキル~
Burp番外編~バープ、チョトニホンゴデキル~Burp番外編~バープ、チョトニホンゴデキル~
Burp番外編~バープ、チョトニホンゴデキル~
 
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション
2 TomcatによるWebアプリケーションサーバ構築 第2章 Tomcat概要(2)-セッション
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
 
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
 
ウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説するウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説する
 
ウェブアプリケーションセキュリティ超入門
ウェブアプリケーションセキュリティ超入門ウェブアプリケーションセキュリティ超入門
ウェブアプリケーションセキュリティ超入門
 
イエラエセキュリティMeet up 20210820
イエラエセキュリティMeet up 20210820イエラエセキュリティMeet up 20210820
イエラエセキュリティMeet up 20210820
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
 
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践
【de:code 2020】 Azure Red hat OpenShift (ARO) によるシステムアーキテクチャ構築の実践
 

Similar to [BurpSuiteJapan]HTTP基礎入門

Beginning Java EE 6 勉強会(7) #bje_study
Beginning Java EE 6 勉強会(7) #bje_studyBeginning Java EE 6 勉強会(7) #bje_study
Beginning Java EE 6 勉強会(7) #bje_study
ikeyat
 
Lesson01
Lesson01Lesson01
Lesson01
MRI
 
サーバーの初歩的な話セミナー@大阪20120901
サーバーの初歩的な話セミナー@大阪20120901サーバーの初歩的な話セミナー@大阪20120901
サーバーの初歩的な話セミナー@大阪20120901
Masayuki Abe
 

Similar to [BurpSuiteJapan]HTTP基礎入門 (20)

Http
HttpHttp
Http
 
HTTP入門
HTTP入門HTTP入門
HTTP入門
 
HTTPの仕組みについて
HTTPの仕組みについてHTTPの仕組みについて
HTTPの仕組みについて
 
Php s1
Php s1Php s1
Php s1
 
Beginning Java EE 6 勉強会(7) #bje_study
Beginning Java EE 6 勉強会(7) #bje_studyBeginning Java EE 6 勉強会(7) #bje_study
Beginning Java EE 6 勉強会(7) #bje_study
 
HTTP入門
HTTP入門HTTP入門
HTTP入門
 
ネットワーク第3回目
ネットワーク第3回目ネットワーク第3回目
ネットワーク第3回目
 
Lesson01
Lesson01Lesson01
Lesson01
 
Restful Web Service Ch2
Restful Web Service Ch2Restful Web Service Ch2
Restful Web Service Ch2
 
HTTP2入門
HTTP2入門HTTP2入門
HTTP2入門
 
Php1
Php1Php1
Php1
 
サーバーの初歩的な話セミナー@大阪20120901
サーバーの初歩的な話セミナー@大阪20120901サーバーの初歩的な話セミナー@大阪20120901
サーバーの初歩的な話セミナー@大阪20120901
 
再入門、サーバープッシュ技術
再入門、サーバープッシュ技術再入門、サーバープッシュ技術
再入門、サーバープッシュ技術
 
勉強会資料①
勉強会資料①勉強会資料①
勉強会資料①
 
45分で理解する webクローリング入門 斉藤之雄
45分で理解する webクローリング入門 斉藤之雄45分で理解する webクローリング入門 斉藤之雄
45分で理解する webクローリング入門 斉藤之雄
 
HTTP を肌で感じる
HTTP を肌で感じるHTTP を肌で感じる
HTTP を肌で感じる
 
About http
About httpAbout http
About http
 
REST APIに入門する。
REST APIに入門する。REST APIに入門する。
REST APIに入門する。
 
HTTPを理解する
HTTPを理解するHTTPを理解する
HTTPを理解する
 
Rest ful api設計入門
Rest ful api設計入門Rest ful api設計入門
Rest ful api設計入門
 

[BurpSuiteJapan]HTTP基礎入門