ホームページ  >  記事  >  バックエンド開発  >  PHP は、セッション control_php の例を通じて認証例を実装します。

PHP は、セッション control_php の例を通じて認証例を実装します。

WBOY
WBOYオリジナル
2016-12-05 13:28:151226ブラウズ

セッション制御の考え方は、Web サイト上のセッションに基づいてユーザーを追跡できるようにすることです。詳細なコードはここにまとめられています。必要な友人はそれを参照してください。

概要

http プロトコルは、リクエストごとにステートレスです。サーバーはユーザーを区別できません。 PHP セッション コントロールはユーザーにキー (暗号化されたセッション文字列) を提供します。これはユーザーの ID の証明でもあり、サーバーはこのキーで開くことができるボックス (データベース、メモリ データベース、またはファイル) を保存します。ユーザーのさまざまな可変情報。

従来のPHPセッションの使用法

リーリー
リーリー
リーリー

質問してください、鍵はどこですか?ユーザーにキーを与える操作を見ませんでしたか?

この操作は、PHP によってバックグラウンドで行われます。page1.php にアクセスしてプログラム session_start(); を実行すると、PHP はその時点の条件 (ユーザー IP、ブラウザー番号、時刻、など) 変数 http 応答がクライアントに返された後、PHPSESSID はブラウザーの Cookie にすでに保存されており、このドメイン名に再度アクセスするたびに、PHPSESSID がサーバーに送信されます。この PHPSESSID が、ここで話しているユーザー キーです。

もう一つ質問ですが、この PHPSESSID のセキュリティは、盗まれやすいですか、偽造されやすいですか、改ざんされやすいですか?

HTTPS を使用すると改ざんを防ぐことができます。 PHPSESSID は使用せず、偽造を防ぐためにユーザーの秘密キーを生成します。盗難されやすいかどうかについては、実際には研究されていません。たとえば、コンピュータがインターネットに接続されており、ハッカーがコンピュータに侵入したとします。

生成された秘密鍵をブラウザのCookieに保存します

  • クッキーを設定する
  • setCookie('key','value',time()+3600);
  • Cookieを削除する
  • setCookie('key','',time()-1);

シングルサインオンの実現: セッション共有

シングル サインオン: 複数のサブシステムがユーザー認証システムを共有します。1 か所でログインすると、すべてのサブシステムにアクセスできます。

次のシナリオを想像してください: サーバー A と B の PHP 環境が同じであると仮定します。ユーザーはサーバー A でキーを取得し、そのキーを使用してサーバー B にアクセスしました。ユーザーはサーバー B を知っていますか?

明らかにそうではありません。サーバー A によって生成されたキーはサーバーによって認識されません。

解決策: ユーザーが A または B にアクセスするかどうかに関係なく、生成されたキーを C (同じデータベースまたはキャッシュ システム) に保存します。ユーザーが再度 A または B にアクセスすると、A と B の両方が C: ユーザーのキーを尋ねます。 . 鍵は合っていますか?正しければ、ユーザーはAまたはBに保管されているボックスを使用できるようになります。

リーリー

以下はセッション制御による認証を実装するPHPの例です

認証アプリケーションプリンシパル: authmain.PHP

リーリー

ウェブサイトの有効なユーザーチェック: members_only.php

リーリー

セッション変数をログアウトし、セッションを破棄します: logout.php

リーリー

以上がこの記事の全内容です。皆様の学習に役立つことを願っております。また、皆様も Script Home をサポートしていただければ幸いです。

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