PHPで自動ログインの仕組み

このQ&Aのポイント
  • PHPで自動ログインの仕組みを検討しています。初回アクセス時にユーザー名とパスワードの入力を行い次回アクセスから自動ログインしたいのですが、セキュリティの問題があります。
  • 現在検討中の方法は以下の通りです。方法(1):クッキーにユーザー名とパスワードを保存する。方法(2):クッキーにセッションIDを保存してDBのユーザー情報と付き合わせる。方法(3):方法(2)にアクセス元のIPアドレスを組み合わせる。
  • クッキーを使用した自動ログインはセキュアではないため、個人情報の流出が懸念される場合は毎回ログインを求めるべきです。HTTPS通信とセッションに情報を持つ方法がセキュアな認証のための一般的な方法です。
回答を見る
  • ベストアンサー

PHPで自動ログインの仕組み

PHPで自動ログインの仕組み PHPで自動ログインの仕組みをどのように組むか検討しています。 初回アクセス時にユーザー名とパスワードの入力を行い次回アクセスから自動ログインしたいのですがセキュリティの問題で良い方法が分かりません。以下が現在検討中の方法です。 方法(1):クッキーにユーザー名とパスワードを保存する。 欠点 :クッキーを見たらログイン情報がばれる。 方法(2):クッキーにセッションIDを保存してDBのユーザー情報と付き合わせる。 欠点 :結局セッションIDを取られてしまえば成りすましされてしまう。 方法(3):方法(2)にアクセス元のIPアドレスを組み合わせる。 欠点 :100%安全ではない。 やはり、クッキーを使っていたらセキュアな認証は不可能なのでしょうか? 個人情報の流出が懸念されるような場合は毎回ログインしてもらいhttps通信の中 大切な情報はセッションに持つのが正しい方法なのですか? WEBの開発には慣れていません。 認証処理の組か方の常識なのかもしれませんが、詳しい方がいたら教えて下さい。 宜しくお願い致します。

  • ken2r
  • お礼率88% (82/93)
  • PHP
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

自動ログインに安全なものはないのでは? セキュリティをバーターに自動で処理するのだから

ken2r
質問者

お礼

ご回答有難うございました。

その他の回答 (1)

回答No.2

安全性はさておき、CakePHPでは、パスポートというものを発行してオートログインしてやるようです。 http://www.garacter.com/notes/CakePHP+Note:%E8%87%AA%E5%8B%95%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%9D%E3%81%AE%EF%BC%92/pi:234 つまり、ID/PASSとは別に会員情報に関してユニークで十分に長い予測不可能な値を会員に持たせて、 それをCOOKIEにつっこんでおき、それを送信されてきたら、紐づいているユーザのIDを調べて ログインさせるという方法のようです。 後はその発行したパスポートを生成日から適当に期限を持たせて、しばらくしたら無効にする、というようにすると。 方法(2)に近いやり方ではありますが、そもそも方法(2)は、HTTPの通信を傍受されていれば、 自動ログインの実装でなくても簡単に成りすまされるものです。

ken2r
質問者

お礼

ご回答有難うございました。 CakePHPのパスポートなど勉強になりました。

関連するQ&A

  • ubuntu20で自動ログインしようとしたら認証を

    ubuntu20で自動ログインしようとしたら認証を求められてあまり意味がない状態です。 認証を求められないようにするにはどうすればいいですか? 設定、ユーザーで自動ログインをオンにすると 自動でログインはしますが そうすると別の認証を求められてしまいます。 これを回避する方法を教えてください。 「パスワードと鍵」で何かをすればできるという情報もありますが、よくわかりませんでした。

  • セッションの仕組み

    php初心者です セッションの仕組みを教えてください 質問1 セッションidとセッションクッキーは同じものですか? 質問2 セッションidやセッションクッキーはデフォルトでは、ブラウザを閉じた時に削除されますか? 質問3 レンタルサーバーのphp.iniを調べてみたところ 保存場所がsession.save_path no valueでした。この場合、訪問者のパソコンにクッキーが保存されてしまうのでしょうか?サーバーに保存する方法はありますか? 質問3 session_start();でセッションを開始したときセッションidが自動で付けられるのはわかりましたが、 セッションid(MD5で作られた数字)の使い道がわかりません 質問4 セッションidはどこに利用すればいいのでしょうか? session_start(); session_id(); //このセッションidの利用方法がわかりません $_SESSION['id'] = $_POST['id']; よろしくお願いします

    • ベストアンサー
    • PHP
  • PHPでパスワード認証

    PHPでパスワード認証をしたいです。 パスワードは、複数あり、テキストボックスにそのどれかが入力されてログインボタンを押すと、パスワードが一致していれば、ログインを許可します。 認証のセッションは、クッキーに記憶して、一定期間有効にしたいです。 また、パスワードは適宜増える可能性があります。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • php/MySQLによるログイン認証について

    お世話になります。 このたび、php/MySQLを使用したID/PWによる ログイン認証のシステムを開発しようとしています。 仕様としては1時間の自動ログイン機能付きです。 (1時間クッキーを有効にする) ネット各所で調べてみると 良く巷のWebやブログで紹介されているものは、 盗聴+クッキーの改変で容易に突破されそうに思います。 良く例にある、クッキーにID/PWを入れるものですが これでは盗聴とクッキー改変には耐えられそうもありません。 また非常に危険に思っています。 またPOSTしたID/PWをcrypt等で暗号化しても、 結局は暗号化したデータを盗聴されたら終わりな気がします。 何か良い仕組みがありましたら お教え願えれば光栄です。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPでのログイン機能について

    今ログイン機能を作成しているのですが ユーザがIDとパスを入力した後にDBと比較し 合っていればログイン成功。合ってなければ戻る という処理を行っています。 この場合、ログインが成功した後にユーザ名、ユーザIDを セッションかクッキーに保存しておきたいと考えているのですが どちらに保存しておいた方がよいのでしょうか。 また、よくセッションIDでログイン状態を管理している。等という話を 聞きますが、この機能はどのように実現しているのでしょうか。 よろしくお願いします。

    • 締切済み
    • PHP
  • PHPのログイン認証管理について

    PHPのログインシステムを開発することになったのですが、一般的に どういった手法がとられているのかお伺いしたくこちらに書き込ませて いただきました。 私が現在実装しているものは、下記となります。 ■ログインフォームからの入力値と照合させ、通った場合、下記の   ようにsession_idをセッションに保存   $_SESSION['authentication'] = sha1(session_id()); ■ログイン後はDBとの通信はせず、上記で保存されたセッション   情報を照合させることにより、認証させる。 if($_SESSION['authentication'] == sha1(session_id())){   認証成功処理 } else{   認証エラー処理 } なにか足りない点や、セキュリティ等の考え方から根本的に誤りが ある場合は、ご指摘いただけますと幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • セッション脆弱性を克服するには?

    またお世話になります。 いつも的確な回答を頂いて助かっていますm( __ __ )m 【仕様】 ・ ログイン認証ページのみ SSL で、それ以外のページは 【非SSL】 です。 ・ ログイン認証時にセッションIDをクライアントのクッキーに保存し、サーバー側では MySQL にセッションIDとログイン情報を保持します。 ・ 認証以降のページでは、クライアントから送信されてくるクッキーセッションIDを元に MySQL のデータと照合し、ユーザーのログイン状態を維持します。 ・ 言語は PHP を使っています。 よくあるセッション管理サイトだと思います。 そして、セッションIDさえ盗まれなければセキュリティとして問題無いと考えています。逆に言うとセッションIDが盗まれると極端に弱いと思います。 【私の考える脆弱性】 ・ ログインページ以外が 非SSL ということから、セッションIDの盗聴が可能かと思います。 ・ 普通に使用していても悪意あるサーバーを経由したらトレースされて簡単にセッションIDが抜かれると思います。 ・ ログインした状態のユーザーが怪しいリンクをクリックしてクロスサイト攻撃でクッキーを抜かれる可能性もあります。 質問は、なぜ、こういった多くの問題が予測できるのに この「教えて!Goo」の認証もログインページはSSLですが、それ以外は非SSLです。といった具合に多くのサイトがこのような認証方式を取っているのか? もう一つ質問は、私は先に上げたような脆弱性を防ぐ方法がわからないのですが、何か画期的な方法でセッションハイジャックなどを防御しているのでしょうか? もしくはセッションIDが盗まれてもそのセッションIDでのアクセスを無毒化するような方法があるのでしょうか? 以上です。 よろしくお願いします。

  • phpのセッションについて質問です

    現在、phpのセッションについて学習しています。 開発環境はxamppでMySQLデータベースにPDOで接続しています。 セッションについていくつか質問があります。 セッションを使った認証の流れですが、 ログインフォーム画面で、session_start()し、ログインの認証が成功したらsession_regenerate_idで新しいセッションを発行⇒ログインが必要な画面でセッションの有無を確認 という流れで良いのでしょうか? セッションハイジャック対策にsession_regenerate_idをするようですが、 これは全てのページで毎回行ったほうが良いのでしょうか? セッションIDの受け渡しはcookieに保存する方法とURLに含む方法があり、 セッションハイジャック対策について記述しているサイトではcookieが推奨されている雰囲気ですが、 PHPマニュアル(http://php.net/manual/ja/session.idpassing.php)では信頼性がないとあります。 どちらを使うのが良いのでしょうか? セッションの有無のチェックはsession_start()を記述するだけでサーバーが行ってくれるのでしょうか? $SESSIONにセッションIDを保存してissetで調べるといった記述が必要なのでしょうか? メールアドレスとパスワードでのログイン認証を実装したいのですが、 その場合、マイページでユーザー情報を表示したい際、ログイン時に入力したメールアドレスを$SESSION[email]に格納し、マイページのphpプログラムにて、$SESSION[email]に格納されたメールアドレスを検索条件にしてSELECTで他の情報を取得したら良いのでしょうか? メールアドレスを$SESSION変数で受け渡しするのはセキュリティ上危険でしょうか?(危険であれば内部管理用のユーザーIDを$SESSIONに格納してデータを取得しようと思います。) 基本的なセッションの知識がないため、質問の数が多くなってしまいましたが、 答えられる範囲で良いのでご回答頂けると有難いです。

    • ベストアンサー
    • PHP
  • ログイン管理について

    こんばんは。  phpを始めたばかりで分からないことがあり、細かく教えて くださる方がいましたらお願いします。  いまphpで会員制のサイトを作成しようと思っています。 分かりやすく言いますと「Yahoo!」さんのようなサイトを です。  そこで登録や修正・削除のページを作成しました。 次にユーザーIDとパスワードを入力してもらい、それによる 認証を実行し結果を出すページも作成しました。 ログイン情報の保持はセッションを利用しています。 そこまで作成し行き詰まりました。 参考にしたページは:http://php.dori-mu.net/session.htmlで このページに記されている「definition.php」ファイルに ログイン情報を格納しようと思いました。 問題となっているのは下記のとおりです。 ●まずユーザの想定するフローは  1.ログインページ(001.php)  2.認証および結果ページ(002.php)  3.会員制ページ(003.php~009.php)  4.ログアウトページ(010.php) でしたが ●想定外のフローは  1.ログインページ(001.php)  2.認証および結果ページ(002.php)  3.会員制ページ(003.php~009.php)   ※この会員制のサイトのログイン中に他のページ    (google等)に遷移する。  4.googleにて色々な操作し「戻る」の操作を行わないで   再度3.の会員制のサイトに遷移  5.会員制ページ(003.php~009.php) ●上記の想定外のフローを行うと、セッション情報が  空となってしまいます。  「戻る」による操作で会員制に戻ると、セッション情報は  保たれています。  「Yahoo!」さんのサイトでは「Yahoo!」にログイン中に 他のサイトに遷移し「戻る」の操作を行わないで「Yahoo!」に 戻ってもログイン情報を保たれています。  ネットで検索を行ったところ、「Yahoo!」さんでは セッションの他にCookieを利用していると拝見しました。 この二つを両立させるには、どのようにしたら 良いのでしょうか? また、もし「Yahoo!」さんが、この方法で無い場合は どうような方法なのでしょうか?  サンプルや参考になるページがありましたら よろしくお願いします。

    • ベストアンサー
    • PHP
  • セッションIDについて

    セッションIDの認証機能についてですが、 IDとパスワードを自動認証しているページで、 セッションID収集し、書き換えると 自動認証ができなくなると思ったのですが、 なぜか、実際にはできてしまいます。 具体的には、 IECookiesView v1.70にて、 クッキーの中のセッションID (たとえばアマゾン)情報を編集して、 再度アマゾンにアクセスしてみたのですが、 トップページに自分の名前が書いてあります。 なぜ、このようになっているのか、 ご存知の方がいれば教えていただけますでしょうか。