2009-12-09 6 views
5

現在、セッションを使用してユーザーをログインしています。しかし、ブラウザを閉じてもう一度開くと、再度ログインする必要があります。あなたはログインしたユーザーをどのようにして2週間と言うことができますか?ユーザーが同じページに再びアクセスしたときにユーザーをログインさせ続ける?

それはクッキーを通してですか?

+1

質問に回答した人も、このトピックに関するセキュリティ上の問題を考えてください。たとえば、クッキーのコピーを介して自動的にログインするのを防ぐ方法。ありがとう。 –

+0

少なくともセッションを使用することによるセキュリティ上のリスクについて言及してください; – Franz

+0

可能であれば、既存の認証フレームワークを再利用する必要があります。例えば、https://github.com/delight-im/PHP-Authを見てください。 – caw

答えて

0

はい。あなたは "自動ログイン"(または "私を覚えています")機能を実装するためにクッキーを使用します。

このgoogle searchまたはSO search resultsは、正しい方向を示すはずです。

1

がこれを読む...その寿命のようなセッションCookieの設定を変更することができます。セッションクッキー(例えば、生存期間を持たないもの)は、ブラウザーを閉じたときに削除されます。セッションを長時間にわたって有効にするには、php.inihttpd.conf、または.htaccessに設定します。おそらくさえini_set

編集で:実はあなたは、この機能を使用することができます。

session_set_cookie_params (86400*30); 
session_start() 

86400 * 30は30日です。

はこちらをご覧ください:http://www.php.net/manual/en/function.session-set-cookie-params.php

9

ですから、「このコンピュータで私を忘れないでください」オプションをしたいですか?ここではあなたがそれを行うことができますどのように言語に依存しない方法です:

  1. 少なくともcookie_iduser_id列のDBテーブルを作成します。必要に応じて、cookie_ttlip_lockも追加します。列名は私自身が推測します。
  2. 初回ログイン時(必要な場合は[Remember me]オプションのみがチェックされています)には、cookie_idを表す長くてユニークで推測が難しいキーを生成し、user_idとともにDBに格納します。指定したクッキー名の前にクッキーのクッキー値としてこれを保存します。例えば。 remember。クッキーの寿命を長くします。 1年。
  3. リクエストごとに、ユーザーがログインしているかどうかを確認します。そうでない場合は、クッキー値cookie_idをクッキー名rememberに関連付けてチェックします。それが存在し、それがDBに基づいて有効であれば、user_idに関連付けられたユーザーに自動的にログインし、クッキーの経過時間を再度延期します。

セキュリティ上のリスクについては、鍵が長くて十分に混在している場合(30個以上の混合文字)、ログインを強制的に強制する可能性はごくわずかです。さらに、オプションの列ip_lockが使用されることを既に理解していると思います。これは、ユーザーのIPアドレスを表す必要があります。最終的には、サーバーがユーザーのIPアドレスを余分な検証として使用できるように、「このIPへのログインをロックする(静的IPの場合のみ)」という追加のチェックボックスを追加することができます。

IPロックなしでユーザーからCookie値を乗っ取った場合はどうなりますか?まあ、これとはあまり関係がありません。それと一緒に生きる。 「私を覚えている」ということは、各フォーラムの下では面白いですし、アカウントの乗っ取りはそれほど心配しないでしょうが、私はそれを管理パネルやサーバサイドのものを制御するような種類のWebページには絶対に使用しません。

結局はかなりストレートです。がんばろう。

+0

私は、データベースにusers-agentを保存することをお勧めします。なぜなら、同じユーザーがIEとFirefoxの両方で覚えておきたい。実際、要求から採掘できるものはすべて、クッキーを盗むのを防ぐために保存する必要がありますか?... –

+0

Doableですが、ユーザーがUAをアップグレードした場合は失敗します。 – BalusC

+0

侵入者が自分のアクセス権を取得するよりも、ユーザーが自分の詳細を再度入力する方が良い方法です。 –

関連する問題