結論から言うと、これは「Webブラウザ(ChromeやSafariなど)が、裏側で補完してくれているから」です。
最後のまとめで、「www」「index.html」「https://」それぞれ省略できる理由をまとめたので、確認してみてください。
ブラウザが「推測」してくれている
私たちがブラウザのアドレスバーに example.com とだけ入力してエンターキーを押したとき、ブラウザは次のような思考プロセスをたどります。
- 「これはURLかな? それとも検索ワードかな?」
- 「ドメイン形式(.comなど)だからURLだ。でも通信プロトコル(手順)が書いてないぞ」
- 「よし、とりあえず http:// か https:// を頭に付けて接続を試みてみよう!」
このように、ブラウザがユーザーの代わりに「プロトコル(通信の決まりごと)」を書き足してくれているのです。
「http」ではなく「https」が選ばれる理由
昔のブラウザは、省略されるとまず http://(暗号化なし)で接続しようとしていました。しかし、現在はセキュリティ上の理由から、「まずは https://(暗号化あり)で繋いでみる」という動作が一般的になっています。
もしそのサイトが https に対応していなかった場合、ブラウザはエラーを出すか、あるいは http に切り替えて接続し直します。
HSTS(HTTP Strict Transport Security)という仕組み
さらに一歩踏み込んだ技術として HSTS があります。
これは、一度 https:// でアクセスしたサイトに対して、「次からは、ユーザーがもし http:// と手入力したとしても、強制的に https:// で通信してね!」とブラウザに記憶させる仕組みです。
これにより、悪意のある第三者が通信を横取りしようとする「ダウングレード攻撃」を防いでいます。
なぜ「https://」が必要なのか(プロトコルの役割)
そもそも、なぜわざわざ https:// なんて書かなければならないのでしょうか?
それは、インターネットにはWeb(HTTP/HTTPS)以外にもたくさんの通信ルールがあるからです。
- ftp://:ファイルを送受信するためのルール
- mailto::メールを送るためのルール
ブラウザは「Webを見るための道具」として進化してきたため、今では https:// を省略しても「Webを見たいんだな」と分かってくれますが、本来は「どのルールで通信するか」を宣言するのがインターネットの基本なのです。
まとめ
www、index.htmlとともにまとめておきます。
省略できるのはなぜか?
- ホスト名(www): サーバーのニックネームだけど、DNS設定により、解決してくれているから
- ファイル名(index.html): サーバーの設定により、自動で呼んでくれているから
- プロトコル(https://): Webブラウザの推測により、「Webを見たいんだな」と忖度してくれているから
こうして見ると、Webとはただの機械的なネットワークではありません。
私たちが『example.com』と一言つぶやくだけで、世界中のサーバーやブラウザが連携して、一瞬で望みの場所へ連れて行ってくれる。
そんな『おせっかいで、とても気が利く執事』のような仕組みが、私たちの日常を支えてくれているんですね。
そう思うと、少しWebが愛おしくなりませんか?
補足 ダウングレード攻撃とは
さきほど、チラッと「ダウングレード攻撃」が出てきたので、補足しておきます。
私たちがブラウザにURLを打ち込むとき、面倒なので example.com とだけ省略して、入力します。
この「省略」という何気ない行動の隙を突くのが、「ダウングレード攻撃」というサイバー攻撃です。
攻撃のシナリオ:通信の「強制格下げ」
通常、Webブラウザは気を利かせて安全な https://(暗号化あり)で繋ごうとします。
しかし、あなたがアクセスボタンを押したその一瞬、悪意のある第三者が通信に割り込んだらどうなるでしょうか。
- ユーザー:
example.comにアクセス(頭の中では安全な接続を期待)。 - 攻撃者: 通信を横取りし、サーバーのふりをして「このサイトは
httpsに対応していません。http(暗号化なし)で繋いでください」とブラウザに嘘の命令を送る。 - ブラウザ: 「あ、そうなんだ」と、安全性の低い
http://にダウングレード(格下げ)して接続してしまう。 - 結果: 通信が暗号化されていないため、パスワードやクレジットカード情報が攻撃者に丸見えになる。
私たちを守る盾「HSTS」
この攻撃を防ぐために開発されたのが、記事本編でも触れた HSTS(HTTP Strict Transport Security) という仕組みです。
一度でもそのサイトに安全にアクセスすると、Webブラウザが「このサイトは絶対に https 以外では繋がないぞ!」と記憶してくれます。すると、たとえ攻撃者が「http で繋いで」と命令しても、ブラウザが「それは怪しい!」と判断して拒否してくれるのです。
サイト運営者ができること
もしあなたがWebサイトを運営しているなら、単に https 化(SSL化)するだけでなく、この HSTSの設定を有効にする ことが、ユーザーをダウングレード攻撃から守る最後の一手になります。
