「ログイン機能」という言葉を聞いて、どんな機能なのかがわかる方は多いと思います。しかし「ログイン機能の仕組みを説明せよ」と言われると困ってしまう方もたくさんいるのではないでしょうか?
そもそもログイン機能とは?
まずはログイン機能と、その必要性について説明します。
ログイン機能とは「ユーザーと、データーベースの持つユーザー情報を結びつけるために行う認証作業」です。ログイン機能があることによりユーザーそれぞれの画面を表示させたり、閲覧できる人を制限するなどの機能を付与することが出来ます。
Twitterを例に挙げてみましょう。
Twitterには自分のツイートを投稿したり、自分以外の投稿を見て「いいね」を押したりする機能があります。ではもし、Twitterにログイン機能がなければどうなるでしょうか?
「”A”という投稿は”B”さんが投稿したもの」という紐付けが出来なくなってしまいます。これでは自分の投稿の履歴はもちろん見れませんし、自分以外の投稿も「誰が」投稿したものか分かりません。「いいね」機能に関しても、誰に「いいね」をしたのか、誰から「いいね」を押されたのか、認識できません。このように、ログイン機能とはそれぞれのユーザーが個別に行った変更を反映したり、履歴を見たりするために必要な機能です。また、データーベースに登録されている情報を守るという大事な役割もあります。
ログインの仕組み
では、ログインの仕組みはどうなっているのでしょうか?ログインの仕組みはいくつかありますが、今回はCookieを使ったログインの仕組みについて説明します。
ログインは、ユーザーが入力したユーザーIDとパスワードをユーザー情報が登録されているデーターベースに問い合わせ、一致した場合にログイン完了後のページを送信します。ログインに使う情報は「ユーザーID+パスワード」の組み合わせ以外にも「メールアドレス+パスワード」など、アプリによって様々です。
セッションとは?
ログインの仕組みを説明するときに、必ずと言っていいほど出てくる言葉に「セッション」と呼ばれるものがあります。
例えばショッピングサイトでの買い物を例に挙げます。ユーザーは以下の作業を行います。
- ショッピングサイトにアクセスする
- ログインする
- 買い物かごに商品を入れる
- 購入する
- ログアウトする
この一連の流れをセッションと呼びます。
もしくは、ショッピングサイトにアクセスしたユーザーとWebサーバー間の状態を管理する仕組みとしてセッションという言葉が使われたり、通信の始まりから終わりという意味合いもあります。
このセッションを実現するために欠かせないのが「セッションID」です。
セッションIDはサーバーが生成するIDで、「ログインしたユーザー」と「生成したセッションID」を紐づけた状態でサーバーに保存されます。セッションIDはログイン後のページと一緒にユーザーのブラウザに送られます。
送られたセッションIDは「Cookie」と呼ばれる場所に保管され、ブラウザを閉じるか、サーバーが指定した有効期限まで有効になります。
Cookieとは?
先ほどセッションの説明の時に「Cookie(クッキー)」という言葉が出てきました。このCookieとはユーザーのコンピュータに保存される小さなファイルのことで、CookieにはIDやWebサイトの閲覧情報などを一時的に記録することができます。HTTPというのは通信状態を維持することが出来ないプロトコルです。しかしショッピングサイトのようにログイン状態を維持したい場面があり、それに対応するためにCookieが生まれました。このCookieの中に情報が残っているため、しばらく時間が経ってから再度Webサイトを訪問した時に自動的にログインすることが出来ます。(Cookieの有効期限や、サーバーによってどのくらいの時間ログイン状態を維持できるのかは異なります。)
そのままのパスワード(平文)は危険
先ほど「ユーザーが入力したユーザーIDとパスワードをユーザー情報のあるサーバーに問い合わせ、一致した場合にログイン完了後のページを送信します」と記載しましたが、実はこれをそのまま行ってしまうのはとても危険です。なぜなら悪意のある攻撃者が侵入してきてデーターベースの中を見たときに、パスワードが丸見えの状態になるからです。侵入者はユーザー本人になりすましてログインが出来るようになってしまいます。
特に、ショッピングサイトなどではクレジットカードの情報、住所や個人情報など、第三者に見られると困る情報をたくさん登録しています。それらの情報を悪意のある第三者が見るかもしれないと思うと、安心してショッピングサイトを利用できなくなってしまいます。そこで、セキュリティを高めるために利用されるのが、「ハッシュ化」です。
ハッシュ化とは?
ハッシュ化とは、簡単に説明すると「パスワードを不規則な文字列に置換する処理」の事を指します。ハッシュ化を施すアルゴリズムは「ハッシュ関数」と呼ばれ、ハッシュ関数によって生成されるランダムな文字列は「ハッシュ値」と呼ばれます。
このハッシュ化と混同されがちなのが「暗号化」です。暗号化も、ハッシュ化と同じようにデータが読み取られないようにする技術ですが、全く別の技術です。
暗号化は「鍵」と呼ばれるものを使って、暗号化したり暗号化したものを元に戻したり(複合化)します。つまり、両方向に変換が可能です。
一方のハッシュ化はハッシュ値への変換は簡単にできますが、元に戻すことは非常に困難です。暗号化との大きな違いは、この「一方向か」「両方向か」です。
まとめ
今回は、ログインの機能や仕組みについて解説しました。
「どういう仕組みなのか」を理解できると、自分でアプリを作るときにとても役に立ちます。
ログインの仕組みをなんとなく理解しているという方も、今回の記事を機に、是非より深い知識を身に着けていただけると幸いです。
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2022.12.11
【徹底解説】ステータスコード2xxについて詳しく
こちらの記事では、HTTPステータスコード200系について解説します。
- WEB
2023.02.07
REST APIとは?特徴やメリットをわかりやすく解説
REST APIを用いることで開発にかかる時間やコストの削減を行うことができ、価格を抑えたサービス提供を行えるだけでなく、共通の枠組みとすることで開発者は理解しやすく効率的な開発が行えます。
- WEB
2023.01.25
Googleサーチコンソールとは?基本的な使い方や導入方法を解説
Googleサーチコンソール(Google Search Console)とはGoogle社が提供を行うWebサイト分析ツールで、サチコの愛称で呼ばれたりもします。
- WEB
- SEO