- ベストアンサー
Cookieを利用したログインについて
- Cookieを利用したログインのサンプルについて
- セキュリティ的には問題ないのか?
- セッション版の処理について
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
PHPのセッションって、結局、Cookieとの組み合わせで動いているもので、 session_start()関数を叩くと、まずはじめに、他と衝突しないランダムな文字列が返されます。 で、そのランダムな文字列をCookieに保存します。 それと同時に、その発行したランダムな文字列と同名のファイルを、php.iniなどで設定されているディレクトリに保存します。 そうすると、次回、ブラウザがそのCookieの内容をサーバに渡してくると、PHPは上記のディレクトリに保存したファイルの中身に記述されている値を$_SESSION変数に代入します。 ということで、CookieだけでログインID/パスワードを制御するということになると、 ブラウザ側に保存される領域にIDやパスワード、その他引き継ぎたい内容など全部保存しなければならなくなってしまいますが セッションは、状態を確認するためだけの認証用のランダムな文字列だけをブラウザにもたせるので、Cookieよりはセキュアになります。
その他の回答 (2)
- magicalpass
- ベストアンサー率58% (378/648)
> ということは、セッション管理をCookieで行なってもよいということでしょうか? Cookie版の方はセッションとは無関係です。 無関係だからセッションが切れてもCookieが有効な限りログイン状態が保持されます。 > ここで用いられている「PHPの設定」の意味は、下記いずれでしょうか? > ・どういう風にPHPで書くか、という意味 > ・同じコードでも、php.iniなどのPHP環境に依存する、という意味 セッションIDの管理にCookieを用いるかURLパラメータを用いるかはphp.iniの設定です。ただし、Cookieを用いる場合はPHPのシステムが自動的にCookieの処理を行ないますが、URLパラメータを用いる場合はコード上でURLリンクを作成する必要があります。 ここでセッションIDの管理をCookieでやるというのと、Cookie版の方でログイン管理をCookieで行うというのはまったく別物だと考えてください。Cookie版でCookieに収めているのはあくまでログイン情報であって、セッションは無関係。セッション版の方はセッションの継続状態によってログイン状態を管理していて、そのセッションIDを保持する手段の一つとしてCookieを利用しているだけです。
お礼
詳しく教えていただき、ありがとうございました。 説明が一番分かりやすかったです。
- magicalpass
- ベストアンサー率58% (378/648)
■Cookie版 セッションの代わりにCookieでアクセス判定を行っているのだから、セッション管理は行っていません。Cookieが有効な限りはセッションが変更されてもログイン状態は保持されます。Cookieのデータはクライアント側に保存されますので、サーバーはクライアントから送られたCookie情報を元にログイン状態を判定します。 セキュリティはどのレベルを要求するかによります。Cookie情報がネット上でやり取りされるのだから完璧なセキュリティは期待できませんが、機密情報をやりとりするのでない限りはある程度は実用的かと思います。 ■セッション版 セッションIDは「session_start();」を呼び出した時に、新たなセッションであった場合に新規に付加されます。セッションが継続している場合は既存のセッションIDが使われます。 セッション情報のやり取りには2通りあります。Cookieを用いる場合とURLパラメータを用いる場合です。どちらを用いるかがPHPの設定によります。Cookieの場合はクライアントのブラウザに保存されます。URLパラメータの場合は動的HTMLにてその都度URLを指示することになります。 セッション変数はセッションIDに結び付けられて、サーバー側で保存されます。
補足
追加で教えてください。 ■Cookie版 >Cookieが有効な限りはセッションが変更されてもログイン状態は保持 ということは、セッション管理をCookieで行なってもよいということでしょうか? セッション管理を行なうのに、Cookieでいくか、セッションでいくかは、 好みの問題、ぐらいの認識でよいでしょうか? ■セッション版 >どちらを用いるかがPHPの設定によります。 ここで用いられている「PHPの設定」の意味は、下記いずれでしょうか? ・どういう風にPHPで書くか、という意味 ・同じコードでも、php.iniなどのPHP環境に依存する、という意味
お礼
詳しく教えていただき、ありがとうございました。