ホームページ  >  記事  >  バックエンド開発  >  php でログイン状態を維持する方法 セキュリティについて詳しく説明します。

php でログイン状態を維持する方法 セキュリティについて詳しく説明します。

WBOY
WBOYオリジナル
2016-08-18 09:16:111263ブラウズ

今、私のウェブサイトはセッションを使用していますが、ブラウザを閉じるとログイン状態が消えてしまい、非常に不便です
[ログイン状態を維持する]機能の使い方と、Cookieのセキュリティを行う方法を詳しく説明するのが最善です。具体的な計画はありませんが、開発経験のある人が指導してくれることを願っています

返信内容:

今、私のウェブサイトはセッションを使用していますが、ブラウザを閉じるとログイン状態が消えてしまい、非常に不便です
[ログイン状態を維持する]機能の使い方と、Cookieのセキュリティを行う方法を詳しく説明するのが最善です。具体的な計画はありませんが、開発経験のある人が指導してくれることを願っています

PHP セッションも Cookie を使用して実装されることに注意してください。ブラウザに保存される Cookie 名はデフォルトで PHPSESSID になります。
このセッションの有効期限は 3600 秒に設定することもできます。
session_set_cookie_params(3600);
この方法 この Cookie は、ブラウザを閉じてから 1 時間以内に再度開いても有効です。

PHP セッションは、デフォルトで各 PHPSESSID がセッション データを保存するファイルに対応します。つまり、異なる PHPSESSID のセッション データは共有されません。
たとえば、PHP セッションを使用してショッピング カートやビデオを実装する場合。閲覧記録機能では、
ショッピングカートのデータをセッションファイルに保存すると、他の端末やブラウザからログインした後はショッピングカートのデータが閲覧できなくなります。
このとき、ショッピングカートのデータをセッションファイルに保存する必要があります。データベース

データベースに基づいてカスタマイズされた Cookie セッション メカニズムを実装する方法について話しましょう:

ユーザー ID (プレーン テキスト) とユーザーのソルト値 (ハッシュ) は Cookie に保存されます。

高度なセキュリティが必要な場合は、MCRYPT_BLOWFISH を使用して Cookie コンテンツ全体を暗号化することもできます。
この Cookie はユーザーを認証できる必要があります。 , そして、偽造してはなりません
ユーザーのソルト値は、ユーザーが登録するときにパスワードを保護するためにランダムに生成されて決定され、ユーザーテーブルのユーザーに対応するフィールドデータに保存されます。 リーリー
ユーザーのソルト、アプリケーションのグローバル ソルト、および MCRYPT_BLOWFISH 暗号化キー $key はすべてランダムに生成され、決定されます。


の現在の時刻に基づいてプロセス ID + 乱数 + マイクロ秒を生成するアルゴリズム。数値 + エントロピー
sha1( uniqid(getmypid().'_'.mt_rand().'_', true) )ユーザーを検証するときは、最初に秘密キーを使用して $_COOKIE['cookie_name'] を復号し、
その後、base64_decode を使用してユーザー ID を取得し、

次にユーザー ID に基づいてユーザーのソルトをクエリし、

次に同じメソッドにソルトを渡します。クッキーに続くハッシュアルゴリズム $cookie_salt のソルトを比較します
それらが一致していれば、ユーザーのクッキーは有効であると判断されます
リーリー

ブラウザを閉じても1か月で期限切れになるように、Cookieの有効期間を設定します。たとえば、現在時刻に1週間を加えます

  1. Cookie の内容は、ユーザー ID に対して対称的に暗号化できます。バックエンドは最初に暗号文を取得し、それを復号化して、最後にログインします
  2. Cookie を操作するだけではセッションの有効期限の問題を解決できません。キャッシュ を使用してセッションを保存することをお勧めします。有効期限は任意に設定できます。オンラインかどうかを確認する場合は、直接アクセスしてください。
php.ini でセッション ストレージ メディアを設定できるようです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。