ハッピーメモメモ

私的備忘録

【Web】HTTP

 

HTTPリクエス

HTTPリクエストは、データのかたまりを送っている

f:id:n-moeko1966:20211222145529p:plain

参照:

https://developer.mozilla.org/ja/docs/Web/HTTP/Messages

 

・HTTPリクエストのボディ部分

  GET…空

  POST…POSTの情報が入っている

 

・荷物を送る場面に例えると

URI(=住所)→IPアドレスに変換して宛先として使われる

HTTPリクエスト(=荷物の中身)

 

GETとPOST

・GETは参照(リソースの取得)のみに用いる

・GETは副作用がないことが期待される

・POSTは秘密情報の送信に用いる

 

=MEMO==============================

副作用

・リソース(コンテンツ)の取得以外の作用

・サーバー側でのデータの追加・更新・削除が起きる作用のこと

 ex)物品の購入、利用者の登録・削除などの処理

==================================

 

秘密情報をPOSTで送信するべき理由

GETは以下の可能性を含んでいるため

・URL上に指定されたパラメータがReferer経由で外部に漏洩する

・URL上に指定されたパラメータがアクセスログに残る

・URL上のパラメータがブラウザのアドレスバーに表示され他人にのぞかれる

・パラメータつきのURLを利用者がソーシャルネットワークなどで共有してしまう

 

GETとPOSTの使い分け

以下がひとつでも当てはまる場合はPOSTを使う

ひとつも当てはまらない場合にはGETを使う

・データ更新など副作用を伴うリクエストの場合

・秘密情報を送信する場合

・送信するデータの総量が多い場合

 

HTTPのステートレス性

・サーバー側は、クライアントの現在の状態を保持しない

 Q.アプリケーションから状態を保持したい要求がきたときは?

 A.セッション管理を行う

・ステートレスプロトコル⇔ステートフルプロトコル ex)FTP

 

セッション管理

・アプリケーションの状態を覚えておくことを、セッション管理と呼ぶ

・セッション管理をHTTPで実現する仕組みがクッキー

 

クッキー

・サーバー側からブラウザに対して、「名前=変数」の組を覚えておくように指示するもの

・保持できる値の個数や文字列長には制限がある

・クッキーの値は利用者本人には参照・変更できるので、秘密情報の格納には向かない

→アプリケーションデータを保持する目的でクッキーそのものに値を入れることはあまり行われない

→クッキーには「整理番号」としてのセッションIDを格納し、実際の値はサーバー側で管理する方法が広く用いられる

 

セッションID

・求められる要件

①第三者がセッションIDを推測できないこと

 →連番だとバレやすいので、乱数にする

②第三者からセッションIDを強制されないこと

 →認証されたタイミングでセッションIDを変更する

 (セッションIDの固定化攻撃を防ぐ!)

③第三者にセッションIDが漏洩しないこと

 →ネットワーク盗聴から保護するにはTLSによる暗号化が有効

 

 

参考:

https://www.amazon.co.jp/dp/B07DVY4H3M/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1