はじめに
こちらの記事ではHTTPとは何?HTTPS?URLの事でしょ?といったあまり深く理解していない方に分かりやすいようにまとめてみました。 下記に当てはまる方が対象になるかと思いますので当てはまる方は是非ご覧ください。
- HTTPについてあまり深く理解していない方
- Web制作の業務経験が少ない方
- ブラウザとサーバーのやり取りを知りたい方
HTTPとは
そもそもHTTPとはブラウザがサーバーと通信する際に使用している通信規格(プロトコル)です。なのでHTTPで通信を行うことで画像やhtml、css、js等のリソースをサーバーに要求してブラウザ上に表示することができます。
HTTPメッセージ
HTTP通信ではブラウザとサーバー上で「HTTPメッセージ」という決められた形式でやり取りを行っています。 詳細は長くなりますのでこちらの記事では説明しませんが「HTTPメッセージ」には「HTTPリクエスト」と「HTTPレスポンス」があります。 簡単に説明するとURLを入力することでサーバーにそのURLへのアクセスを要求しているかと思いますがその際にサーバーにURLの情報をくださいといった「HTTPリクエスト」を送信してそのURLのページを読み取りその中で記述されている画像、CSS、JS等も要求していきます。 その後、サーバーからその要求にたいしての返答がかえってきます。それが「HTTPレスポンス」です。「HTTPレスポンス」では読み込みができたかどうか等の返答がかえってきます。
Cookieについて
HTTPは文書のやり取りをする為に開発されたプロトコルであり、ブラウザとサーバー間の状態の維持は不要だったのですがWebアプリケーションの普及によってユーザーがブラウザとサーバー間の状態の維持を求めるようになりサーバーとやり取りした情報を保存する仕組みとして「Cookie」が開発されました。 具体的にはamazon等にログインして閉じた後、再度amazonを開いた際にログイン状態になっているといったことがあるかと思います。ログイン情報が「Cookie」に保存されていることでログイン状態の維持が可能になっています。
HTTPとHTTPSの違い
まずHTTPSとは、HTTPと同じようにブラウザとサーバーを通信させるプロトコル(仕組み)のことですが、HTTPSとHTTPの違いは、通信がTLSによって暗号化されているか否かです。
通信データの安全性
なぜHTTPSが生まれたのかということですが元々HTTPは文書のやり取りをするために開発されたプロトコルなのでセキュリティについては考慮されていませんでした。ですが、昨今のWebサイトでは様々なデータを取り扱うようになった為セキュリティを考慮したHTTPSが開発されました。 実際にHTTPでどういった部分にセキュリティの弱点があるかですが大きく3つあります。 下記弱点を解決するのがHTTPSです。
- 通信データの暗号化ができないので盗聴することが可能
- 通信先のサーバーが本物であることの証明ができないのでなりすまされる可能性がある
- 通信内容が正しいか検証できない為通信途中で改ざんされる可能性がある
Mixed Contentの解消
自身のサイトがHTTPS化していても読み込んでいるリソース(CSS,JS)等がHTTPSでない場合データは暗号化されていないので通信途中で悪意のある記述に改ざんされる可能性があります。 このようにHTTPSのサイト内にHTTPのリソースが混在することを「Mixed Content」と言います。 攻撃される可能性を考慮してすでにGoogle ChromeやFirefox,Safariなどの主要ブラウザでは別サイトでHTTPSではないサイトのリソースの読み込みをブロックしていますのでHTTPで配信されているリソースを読み込む際は注意が必要です。
まとめ
HTTPとHTTPSの事を学んでみてWebの進化をとても感じることができますね。 今回の記事ではHTTPSにする方法は紹介していませんがHTTPSであることが当たり前の時代になってきていますし、この記事で紹介した危険性もありますのでまだHTTPSにしていない方にはHTTPSにすることをお勧め致します。
参考文献
HTTP の概要 – HTTP | MDN
HTTPS – MDN Web Docs 用語集: ウェブ関連用語の定義 | MDN
混在コンテンツ – ウェブセキュリティ | MDN
フロントエンド開発のためのセキュリティ入門 知らなかったでは済まされない脆弱性対策の必須知識
RECOMMEND
【Web開発者必読】同一オリジンポリシー(SOP)について