ホームページ  >  記事  >  バックエンド開発  >  PHPにおけるセッションIDの実装原理の分析

PHPにおけるセッションIDの実装原理の分析

王林
王林オリジナル
2019-11-08 10:56:563163ブラウズ

PHPにおけるセッションIDの実装原理の分析

セッション動作メカニズム:

訪問者ごとに一意の ID (UID) を作成し、変数はそれに基づいて保存されます。このUIDで。 UID は Cookie に保存されるか、URL を通じて渡されます。

PHPSESSIONID 生成アルゴリズムの原則:

1. hash_func = md5 / sha1 #php.ini で設定可能

2. PHPSESSIONID = hash_func ( customer End IP 現在時刻 (秒) 現在時刻 (マイクロ秒) PHP 独自の乱数生成器)

上記 hash_func(*) のデータサンプリング値の内容解析より、同一サーバー上に複数のユーザーがいる場合重複した PHPSESSIONID が生成される可能性は非常に低いです。

さらに、ハッカーが特定のユーザーの PHPSESSIONID を推測したい場合、シミュレートする前に、「クライアント IP、現在時刻 (秒、マイクロ秒)、乱数」およびその他のデータも知っておく必要があります。 。

php.ini 設定は次のとおりです:

; Select a hash function for use in generating session ids.
; Possible Values
;  0 (MD5 128 bits)
;  1 (SHA-1 160 bits)
; This option may also be set to the name of any hash function supported by
; the hash extension. A list of available hashes is returned by the hash_algos()
; function.
; http://php.net/session.hash-function
session.hash_function=0

PHP セッションの動作原理

次の説明では、送信に Cookie を使用します。 PHPSESSID。

1. クライアントは php サーバーのアドレスを要求します。

2. サーバーはリクエストを受け取り、今回は php スクリプトに session_start() が含まれています。

3. サーバーは PHPSESSID を生成します。 (デフォルトのセッション保存方法は session.save_handler=files で、ファイル形式で保存されます。生成されるセッション ファイル名ルールは sess_PHPSESSID で、セッション ファイルは session に存在します。 .save_path in.)

4. サーバー応答ヘッダー 応答ヘッダー: Set-Cookie:PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50; path=/。クライアント上で Cookie を生成して、この PHPSESSID を保存します。

5. 現時点では、クライアントの Cookie には PHPSESSID が含まれており、次に各リクエストのクライアントのヘッダー Request Headers: Cookie:PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50。サーバーはクライアントからリクエストを受信するたびに、このPHPSESSIDを元にサーバーのセッションファイルを見つけ、このセッションファイルを読み書きすることでセッションのスーパーグローバル変数属性を実現します。

クライアントが Cookie を無効にすると、Cookie を使用して PHPSESSID を渡すことができないため、クライアントがリクエストするたびにサーバーはセッション ファイルを再確立し、 を渡すことができなくなります。 PHPSESSID セッション ファイルを再利用するには、セッションが無効になります。

この場合、session.use_trans_sid を設定して PHPSESSID を送信できます。特定の実装方法と Cookie の違いは、PHPSESSID## を渡すことです。 # HTTP 経由GET転送。 PHPSESSID パラメータ「url?PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50」は、要求された各アドレスに入力されます。

PHPcli モードは session_id() を通じてセッションを使用します

これを使用して現在のセッションの PHPSESSID を取得したり、現在のセッションを設定したりすることもできますPHPSESSID。

これを PHPcli モードで設定すると、セッションを使用する目的を達成することができ、非常に便利です。

例:

<?php
// session_id(&#39;vingbrv8m64asth0nhplu9gmb7&#39;);
session_start();
$_SESSION[md5(rand(100,999))] = rand(100,999);
var_dump($_SESSION);

推奨チュートリアル:

PHP ビデオ チュートリアル

php 中国語ネットワーク学習トピック:php セッション (画像、テキスト、ビデオ、ケースを含む)

以上がPHPにおけるセッションIDの実装原理の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

関連記事

続きを見る