Heim >Backend-Entwicklung >PHP-Tutorial >Analyse des Implementierungsprinzips der Session-ID in PHP
Sitzungsarbeitsmechanismus:
Erstellen Sie eine eindeutige ID (UID) für jeden Besucher, und Variablen werden basierend darauf gespeichert auf dieser UID. Die UID wird in einem Cookie gespeichert oder über die URL weitergegeben.
PHPSESSIONID-Produktionsalgorithmusprinzip:
1. hash_func = md5 / sha1 #kann durch php.ini konfiguriert werden
2. PHPSESSIONID = hash_func ( End-IP des Kunden + aktuelle Zeit (Sekunden) + aktuelle Zeit (Mikrosekunden) + PHPs eigener Zufallszahlengenerator)
Aus der Inhaltsanalyse der Datenabtastwerte im obigen hash_func(*), mehrfach Benutzer in derselben Die Wahrscheinlichkeit einer Duplizierung der PHPSESSIONID, die bei Verwendung eines Servers generiert wird, ist äußerst gering.
Wenn ein Hacker außerdem die PHPSESSIONID eines Benutzers erraten möchte, muss er auch die „Client-IP, die aktuelle Zeit (Sekunden, Mikrosekunden), die Zufallszahl“ und andere Daten kennen, bevor er sie simulieren kann.
php.ini-Konfiguration ist wie folgt:
; 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
Funktionsprinzip der PHP-Sitzung
Die folgende Beschreibung verwendet Cookies zur Übertragung PHPSESSID.
1. Der Client fordert eine PHP-Serveradresse an.
2. Der Server empfängt die Anfrage und dieses Mal enthält das PHP-Skript session_start()
.
3. Der Server generiert ein PHPSESSID
. (Die Standardsitzungsspeichermethode ist session.save_handler=files
, die in Dateiform gespeichert wird. Die generierte Sitzungsdateinamensregel ist sess_PHPSESSID
, und die Sitzungsdatei wird in session.save_path
gespeichert.)
4 Antwortheader Response Headers:Set-Cookie:PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50; path=/
. Generieren Sie auf dem Client ein Cookie, um dies zu speichern PHPSESSID
.
5. Zu diesem Zeitpunkt enthält das Cookie des Clients PHPSESSID
und jede nachfolgende Anfrage des Clients enthält den Header Request Headers
: Cookie:PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50
. Jedes Mal, wenn der Server eine Anfrage vom Client erhält, kann er die Sitzungsdatei des Servers anhand dieser PHPSESSID
finden. Durch Lesen und Schreiben dieser Sitzungsdatei wird das superglobale Variablenattribut der Sitzung realisiert.
Wenn der Client Cookies deaktiviert, da Cookies nicht zum Übertragen von PHPSESSID
verwendet werden können, erstellt der Server jedes Mal eine Sitzungsdatei neu, wenn der Client eine Anfrage stellt, und die Sitzungsdatei kann nicht über Die Sitzung ist also ungültig. PHPSESSID
so einstellen, dass session.use_trans_sid
übertragen wird. Der Unterschied zwischen der spezifischen Implementierung und Cookies besteht darin, dass PHPSESSID
über HTTPs PHPSESSID
übertragen wird. Dies wird erreicht, indem der PHPSESSID-Parameter „GET
“ in jeder angeforderten Adresse ausgefüllt wird. url?PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50
Der PHPcli-Modus verwendet session
über session_id(), um die PHPSESSID der aktuellen Sitzung abzurufen und auch um die PHPSESSID der aktuellen Sitzung festzulegen. Sie können dies im PHPcli-Modus festlegen, um den Zweck der Sitzungsverwendung zu erreichen, was sehr praktisch ist. Zum Beispiel:<?php // session_id('vingbrv8m64asth0nhplu9gmb7'); session_start(); $_SESSION[md5(rand(100,999))] = rand(100,999); var_dump($_SESSION);Empfohlenes Tutorial:
php Chinesisch-Website-Lernthema : PHP-Sitzung (einschließlich Bilder, Texte, Videos, Fälle)
Das obige ist der detaillierte Inhalt vonAnalyse des Implementierungsprinzips der Session-ID in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!