2017-08-25 16 views
0

私はPHPを試しています。セッションを使用すると、ブラウザウィンドウを閉じるとセッションが期限切れになることに気付きました。閉じたブラウザウィンドウでセッションを維持するためにsession.cookie_lifetimeを使用するのは悪いですか?

私はここで検索し、あなたはsession.cookie_lifetimeを使用できると言いましたが、それはあまりにも長くするのはお勧めしません。私の質問は。たとえば、次のようなサイト、reddit、またはfacebook。彼らはあなたがブラウザを閉じたときにセッションが閉じられないように "私を覚えています"ボタンを持っています。彼らはどのようにこれを達成するのですか?

ありがとうございます!

答えて

0

セッションの目的は、ブラウザを閉じるときに終了することです。そのような振る舞いを望まないなら、セッションではなくクッキーを使うべきです。 PHPのsetcookie()関数を見てください。これにより、長時間(年単位でも)持続するCookieを作成することができ、「Remember Me」のような永続的な永続データに最適です。関数。

+0

しかし、私は、クッキーにユーザの情報を保存すると、ブラウザに保存されているクッキーから、ハッカーがそのクッキーを変更する可能性があることも読み取っています。たとえば、ユーザーにログインすると、そのユーザーIDは '$ _SESSION ['userId']'変数に格納されます。しかし、私がクッキーでそれを行うと、ハッカーはIDを変更して他のユーザーと同じようにログインすることができます。コースの私はここで何かを逃しているが、私はそれが何であるか分からない。 – nick

+0

誰かが予期せぬものに変更できるような機密データを保存する必要はありません。代わりに、トークンを使用することができます。だからあなたは、ユーザーのためのランダム化されたトークンを作成し、トークンを格納することができます。誰かがユーザーのコンピュータをハックしてCookieを変更した場合、ユーザーIDのように予測可能なものではありません。代わりに、ハッカーが予測する方法がないというトークンです。ハッカーがそれを変更した場合、最悪の場合、ユーザーはログインすることはできませんが、別のユーザーと一致するものに変更することはできません。 –

関連する問題