Laufzeit-Konfiguration
Das Verhalten dieser Funktionen wird durch Einstellungen in der php.ini beeinflusst.
Name | Standard | Veränderbar | Changelog |
---|---|---|---|
session.save_path | "" | PHP_INI_ALL | |
session.name | "PHPSESSID" | PHP_INI_ALL | |
session.save_handler | "files" | PHP_INI_ALL | |
session.auto_start | "0" | PHP_INI_PERDIR | |
session.gc_probability | "1" | PHP_INI_ALL | |
session.gc_divisor | "100" | PHP_INI_ALL | |
session.gc_maxlifetime | "1440" | PHP_INI_ALL | |
session.serialize_handler | "php" | PHP_INI_ALL | |
session.cookie_lifetime | "0" | PHP_INI_ALL | |
session.cookie_path | "/" | PHP_INI_ALL | |
session.cookie_domain | "" | PHP_INI_ALL | |
session.cookie_secure | "0" | PHP_INI_ALL | Vor PHP 7.2.0 war die Grundeinstellung "" . |
session.cookie_httponly | "0" | PHP_INI_ALL | Vor PHP 7.2.0 war die Grundeinstellung "" . |
session.cookie_samesite | "" | PHP_INI_ALL | Seit PHP 7.3.0 verfügbar. |
session.use_strict_mode | "0" | PHP_INI_ALL | |
session.use_cookies | "1" | PHP_INI_ALL | |
session.use_only_cookies | "1" | PHP_INI_ALL | |
session.referer_check | "" | PHP_INI_ALL | |
session.cache_limiter | "nocache" | PHP_INI_ALL | |
session.cache_expire | "180" | PHP_INI_ALL | |
session.use_trans_sid | "0" | PHP_INI_ALL | |
session.trans_sid_tags | "a=href,area=href,frame=src,form=" | PHP_INI_ALL | Verfügbar ab PHP 7.1.0. |
session.trans_sid_hosts | $_SERVER['HTTP_HOST'] |
PHP_INI_ALL | Verfügbar ab PHP 7.1.0. |
session.sid_length | "32" | PHP_INI_ALL | Verfügbar ab PHP 7.1.0. |
session.sid_bits_per_character | "4" | PHP_INI_ALL | Verfügbar ab PHP 7.1.0. |
session.upload_progress.enabled | "1" | PHP_INI_PERDIR | |
session.upload_progress.cleanup | "1" | PHP_INI_PERDIR | |
session.upload_progress.prefix | "upload_progress_" | PHP_INI_PERDIR | |
session.upload_progress.name | "PHP_SESSION_UPLOAD_PROGRESS" | PHP_INI_PERDIR | |
session.upload_progress.freq | "1%" | PHP_INI_PERDIR | |
session.upload_progress.min_freq | "1" | PHP_INI_PERDIR | |
session.lazy_write | "1" | PHP_INI_ALL | |
session.hash_function | "0" | PHP_INI_ALL | Entfernt ab PHP 7.1.0. |
session.hash_bits_per_character | "4" | PHP_INI_ALL | Entfernt ab PHP 7.1.0. |
session.entropy_file | "" | PHP_INI_ALL | Entfernt ab PHP 7.1.0. |
session.entropy_length | "0" | PHP_INI_ALL | Entfernt ab PHP 7.1.0. |
Das Session-Verwaltungssystem unterstützt eine Anzahl von Konfigurationsoptionen, die in der php.ini gesetzt werden können. Wir geben dazu einen kleinen Überblick.
-
session.save_handler
string -
session.save_handler
definiert den Namen der Routine, die verwendet wird, um die Daten zu speichern und abzurufen, die mit der Session in Verbindung stehen. Grundeinstellungfiles
. Zu beachten ist, dass einzelne Erweiterungen ihre eigenensave_handler
registrieren können. Welche Routinen registriert sind, kann auf Basis der jeweiligen Installation mit phpinfo() ermittelt werden. Siehe auch session_set_save_handler(). -
session.save_path
string -
session.save_path
definiert das Argument, das an die Speicherroutine übergeben wird. Wenn Sie die standardmäßige files-Routine wählen, ist das der Pfad, unter dem die Dateien erzeugt werden. Siehe auch session_save_path().Für diese Anweisung gibt es ein optionales Argument
N
, das die Anzahl der Verzeichnisebenen bestimmt, über welche die Session-Dateien verteilt werden. Wird sie zum Beispiel auf'5;/tmp'
gesetzt, kann das das Anlegen einer Session-Datei und -Speicherstelle wie/tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If
bewirken. UmN
verwenden zu können, müssen alle diese Verzeichnisse vorher angelegt werden. In ext/session gibt es für diesen Zweck ein kleines Shell-Script namens mod_files.sh und eine Version für Windows namens mod_files.bat. Zu beachten ist, dass die automatische Speicherbereinigung (garbage collection) nicht durchgeführt wird, wennN
verwendet wird und größer 0 ist (für weitere Informationen siehe eine Kopie der php.ini). Außerdem muss bei der Verwendung vonN
beachtet werden, dasssession.save_path
zwischen Anführungsstriche gesetzt wird, weil der Trenner (;
) in der php.ini auch für Kommentare verwendet wird.Standardmäßig erzeugt die files-Speicherroutine Dateien mit dem Modus 600. Dieser Wert kann mit dem optionalen Argument
MODE
geändert werden:N;MODE;/pfad
, wobeiMODE
die oktale Darstellung des Modus ist. Die Angabe vonMODE
hat keine Auswirkungen auf den Prozess umask.WarnungWenn ein Verzeichnis gewählt wurde, für das jeder Leserechte hat, wie das z. B. bei /tmp (Grundeinstellung) der Fall ist, könnten andere Serverbenutzer mit Hilfe der Dateiliste dieses Verzeichnisses die Sessions entführen.
AchtungWird das optionale Argument
N
für die Verzeichnisebenen wie oben beschrieben verwendet, ist zu beachten, dass ein Wert größer als 1 oder 2 wegen der großen Anzahl an benötigten Verzeichnissen für die meisten Websites unangemessen ist: z. B. bedeutet ein Wert von 3, dass(2 ** session.sid_bits_per_character) ** 3
Verzeichnisse im Dateisystem existieren, was eine große Verschwendung an Speicher und Inodes zur Folge haben kann.Verwenden Sie
N
größer als 2 nur, wenn Sie absolut sicher sind, dass Ihre Website so groß ist, dass Sie es benötigen. -
session.name
string -
session.name
definiert den Namen der Session, der als Cookie-Name verwendet wird. GrundeinstellungPHPSESSID
. Siehe auch session_name(). -
session.auto_start
bool -
session.auto_start
definiert, ob das Session-Modul zu Beginn einer Anfrage automatisch eine Session startet. Grundeinstellung0
(deaktiviert). -
session.serialize_handler
string -
session.serialize_handler
definiert den Namen der Routine, die verwendet wird, um Daten zu serialisieren/deserialisieren. Unterstützt werden das PHP-Serialisierungsformat (Namephp_serialize
), die internen PHP-Formate (Namenphp
undphp_binary
) und WDDX (Namewddx
). WDDX steht nur zur Verfügung, wenn PHP mit WDDX-Unterstützung kompiliert wurde.php_serialize
verwendet intern die einfachen serialize/unserialize-Funktionen und hat nicht die Einschränkungen, diephp
undphp_binary
haben. Ältere Serialisierungsroutinen können aus $_SESSION weder numerische Indizes speichern, noch alphanumerische Indizes, die Sonderzeichen (|
und!
) enthalten. Verwenden Siephp_serialize
um Fehler wegen solcher Indizes am Ende des Skripts zu vermeiden. Grundeinstellungphp
. -
session.gc_probability
int -
session.gc_probability
wird in Verbindung mitsession.gc_divisor
dazu verwendet, die Wahrscheinlichkeit zu regeln, mit der die gc-Routine (gc=garbage collection, Speicherbereinigung) gestartet wird. Grundeinstellung1
. Siehe auch session.gc_divisor. -
session.gc_divisor
int -
session.gc_divisor
definiert gekoppelt mitsession.gc_probability
die Wahrscheinlichkeit, mit der die gc-Routine (gc=garbage collection, Speicherbereinigung) bei jeder Initialisierung einer Session gestartet wird. Die Wahrscheinlichkeit errechnet sich aus gc_probability/gc_divisor. 1/100 bedeutet z. B., dass die gc-Routine bei jeder Anfrage mit einer Wahrscheinlichkeit von 1% gestartet wird. Grundeinstellung100
. -
session.gc_maxlifetime
int -
session.gc_maxlifetime
definiert die Anzahl der Sekunden, nach denen Daten als 'garbage' ('Müll') betrachtet und möglicherweise entsorgt werden. Die Speicherbereinigung kann zu Beginn einer Session durchgeführt werden (abhängig von session.gc_probability und session.gc_divisor). Die Grundeinstellung ist1440
(24 Minuten).Hinweis: Falls sich der Wert von
session.gc_maxlifetime
in verschiedenen Skripten unterscheidet, aber sie die Session-Daten an der selben Stelle speichern, löscht das Skript mit dem kleinsten Wert die Daten. Verwenden Sie die Anweisung in diesem Fall zusammen mit der Anweisung session.save_path. -
session.referer_check
string -
session.referer_check
enthält die Zeichenkette, auf die Sie jeden HTTP-Referer überprüfen wollen. Wenn der Referer vom Client gesendet und die Zeichenkette nicht gefunden wurde, wird die eingebettete Session-ID als ungültig gekennzeichnet. Grundeinstellung ist eine leere Zeichenkette. -
session.entropy_file
string -
session.entropy_file
gibt den Pfad zu einer externen Quelle (Datei) an, die bei der Erzeugung einer Session-ID als zusätzliche Entropiequelle verwendet wird. Beispiele sind/dev/random
oder/dev/urandom
, die auf vielen Unix-Systemen zur Verfügung stehen. Diese Einstellung wird unter Windows unterstützt. Wennsession.entropy_length
auf einen von Null verschiedenen Wert gesetzt wird, verwendet PHP die Windows-Zufalls-API als Entropie-Quelle.Hinweis: Entfernt in PHP 7.1.0. Die Grundeinstellung für
session.entropy_file
ist/dev/urandom
oder/dev/arandom
, falls es verfügbar ist. -
session.entropy_length
int -
session.entropy_length
definiert die Anzahl der Bytes, die von der oben spezifizierten Datei gelesen werden. Grundeinstellung32
(deaktiviert). Entfernt in PHP 7.1.0. -
session.use_strict_mode
bool -
session.use_strict_mode
definiert ob das Modul den strikten Modus für die Session-ID verwendet. Wenn dieser Modus aktiviert ist, akzeptiert das Modul keine Session-ID, die nicht initialisiert ist. Falls ein Browser eine uninitialisierte Session-ID sendet, wird eine neue Session-ID zum Browser gesendet. Im strikten Modus sind Anwendungen vor der Übernahme der Session durch Session-Fixation geschützt. Grundeinstellung0
(deaktiviert).Hinweis: Das Aktivieren von
session.use_strict_mode
ist für grundsätzliche Session-Sicherheit verpflichtend. Es wird empfohlen, dass alle Sites dies aktiveren. Verdeutlichender Beispielcode kann der Dokumentation von session_create_id() entnommen werden.WarnungWenn eine benutzerdefinierte Session-Routine, der per session_set_save_handler() registriert wurde, weder SessionUpdateTimestampHandlerInterface::validateId() implementiert, noch einen
validate_sid
-Callback übergibt, ist der strikte Session-ID-Modus praktisch deaktiviert, unabhängig vom Wert dieser Anweisung. Im Besonderen ist zu beachten, dass SessionHandler SessionHandler::validateId() nicht implementiert. -
session.use_cookies
definiert, ob das Modul Cookies verwendet, um die Session-ID clientseitig zu speichern. Grundeinstellung1
(aktiviert). -
session.use_only_cookies
definiert, ob das Modul nur Cookies verwendet, um die Session-ID clientseitig zu speichern. Mit Aktivierung dieser Einstellung wird möglichen Angriffen durch Übermittlung von Session-IDs in URLs vorgebeugt. Grundeinstellung1
(aktiviert). -
session.cookie_lifetime
definiert die Cookie-Lebensdauer, die an den Browser geschickt wird, in Sekunden. Der Wert 0 bedeutet "bis der Browser geschlossen wird." Grundeinstellung0
. Siehe auch session_get_cookie_params() und session_set_cookie_params().Hinweis: Der Verfalls-Zeitstempel wird relativ zur Serverzeit gesetzt, die nicht unbedingt mit der Browserzeit des Clients übereinstimmt.
-
session.cookie_path
definiert den Pfad, der im Session-Cookie gesetzt wird. Grundeinstellung/
. Siehe auch session_get_cookie_params() und session_set_cookie_params(). -
session.cookie_domain
definiert die Domain, die im Session-Cookie gesetzt wird. In der Grundeinstellung überhaupt keine, was bedeutet, dass entsprechend der Spezifikation für Cookies der Hostname des Servers verwendet wird, der das Cookie erzeugt hat. Siehe auch session_get_cookie_params() und session_set_cookie_params(). -
session.cookie_secure
definiert, ob Cookies nur über sichere Verbindungen geschickt werden sollen. Grundeinstellungoff
. Siehe auch session_get_cookie_params() und session_set_cookie_params(). -
session.cookie_httponly
markiert das Cookie als nur über das HTTP-Protokoll zugänglich. Das bedeutet, dass für Skriptsprachen wie z. B. JavaScript nicht zugänglich ist. Diese Einstellung kann helfen, Identitätsdiebstahl durch XSS-Angriffe zu reduzieren (obwohl es nicht von allen Browsern unterstützt wird). -
Erlaubt es Servern zu bestätigen, dass ein Cookie nicht mit
seitenübergreifenden Anfragen gesendet werden sollte. Diese Bestätigung
ermöglicht es User Agents die Gefahr von herkunftsübergreifenden
Informationslecks zu lindern, und bietet etwas Schutz gegen
Fälschungsangriffe auf seitenübergreifende Anfragen (Cross-Site Request
Forgery Attacks). Es ist zu beachten, dass diese nicht von allen
Browsern unterstützt wird. Ein leerer Wert bedeutet, dass kein
SameSite-Cookie-Attribut gesetzt wird.
Lax
undStrict
bedeuten, dass das Cookie bei POST-Anfragen nicht domainübergreifend gesendet wird;Lax
sendet das Cookie für domainübergreifende GET-Anfragen, währendStrict
das nicht tut. -
session.cache_limiter
string -
session.cache_limiter
definiert die Methode der Cacheverwaltung, die bei Session-Seiten verwendet wird. Das kann einer der folgenden Werte sein:nocache
,private
,private_no_expire
oderpublic
. Grundeinstellungnocache
. Informationen über die Bedeutung dieser Werte finden Sie in der session_cache_limiter()-Dokumentation. -
session.cache_expire
int -
session.cache_expire
definiert in Minuten, wie lange Session-Seiten im Cache bleiben. Bei nocache ist diese Angabe wirkungslos. Grundeinstellung180
. Siehe auch session_cache_expire(). -
session.use_trans_sid
bool -
session.use_trans_sid
bestimmt ob transparente SID-Unterstützung aktiviert ist oder nicht. Grundeinstellung0
(deaktiviert).Hinweis: Die URL-basierte Session-Verwaltung hat im Vergleich zur Cookie-basierten Session-Verwaltung zusätzliche Sicherheitsrisiken. Benutzer können zum Beispiel eine URL, die eine aktive Session-ID enthält, per E-Mail an Freunde schicken oder in ihren Bookmarks speichern und immer mit der selben Session-ID auf Ihre Seite zugreifen. Seit PHP 7.1.0 werden auch vollständige URL-Pfade, z. B. https://php.net/, vom trans-sid-Feature unterstützt. Vorherige PHP-Versionen unterstützten nur relative URL-Pfade. Rewrite-Ziel-Hosts werden durch session.trans_sid_hosts definiert.
-
session.trans_sid_tags
gibt an, welche HTML-Tags umgeschrieben werden, um die Session-ID zu enthalten, wenn transparente SID-Unterstützung aktiviert ist. Die Voreinstellung ista=href,area=href,frame=src,input=src,form=
.form
ist ein besonderes Tag.<input hidden="session_id" name="session_name">
wird als Form-Variable hinzugefügt.Hinweis: Vor PHP 7.1.0, wurde url_rewriter.tags für diesen Zweck verwendet. Seit PHP 7.1.0 wird
fieldset
nicht mehr als besonderes Tag angesehen. -
session.trans_sid_hosts
string -
session.trans_sid_hosts
gibt an, welche Hosts umgeschrieben werden, um die Session-ID zu enthalten, wenn transparente SID-Unterstützung aktiviert ist. Die Voreinstellung ist$_SERVER['HTTP_HOST']
. Mehrere Hosts können durch "," getrennt angegeben werden; Leerzeichen sind nicht erlaubt. Beispiel:php.net,wiki.php.net,bugs.php.net
. -
session.sid_length
int -
session.sid_length
erlaubt die Angabe der Länge der Session-ID-Zeichenkette. Diese Länge kann zwischen 22 und 256 liegen. Die Voreinstellung ist 32. Wird Kompatibilität benötigt, kann 32, 40, etc. angegeben werden. Längere Session-IDs sind schwieriger zu erraten. Wenigstens 32 Zeichen werden empfohlen.TippHinweis zur Kompatibiliät: Verwenden Sie 32 anstatt
session.hash_function
=0 (MD5) undsession.hash_bits_per_character
=4,session.hash_function
=1 (SHA1) undsession.hash_bits_per_character
=6. Verwenden Sie 26 anstattsession.hash_function
=0 (MD5) undsession.hash_bits_per_character
=5. Verwenden Sie 22 anstattsession.hash_function
=0 (MD5) undsession.hash_bits_per_character
=6. Die INI Werte müssen so konfiguriert werden, dass sie wenigstens 128 bits in der Session-ID haben. Vergessen Sie nicht,session.sid_bits_per_character
den entsprechenden Wert zuzuweisen; andernfalls erhalten Sie schwächere Session-IDs.Hinweis: Diese Einstellung wurde in PHP 7.1.0 eingeführt.
-
session.sid_bits_per_character
int -
session.sid_bits_per_character
erlaubt die Angabe der Anzahl der Bits in kodierten Session-ID-Zeichen. Die möglichen Werte sind '4' (0-9, a-f), '5' (0-9, a-v) und '6' (0-9, a-z, A-Z, "-", ","). Die Voreinstellung ist 4. Mehr Bits ergeben stärkere Session-IDs. 5 wird für die meisten Umgebungen empfohlen.Hinweis: Diese Einstellung wurde in PHP 7.1.0 eingeführt.
-
session.hash_function
mixed -
session.hash_function
gibt Ihnen die Möglichkeit, den Prüfsummen-Algorithmus für die Erzeugung von Session-IDs selbst zu bestimmen. '0' bedeutet MD5 (128 Bit) und '1' bedeutet SHA-1 (160 Bit).Es ist auch möglich, einen der Algorithmen zu bestimmen, die durch die Hash-Erweiterung (falls vorhanden) zur Verfügung stehen, z. B.
sha512
oderwhirlpool
. Eine vollständige Liste unterstützter Algorithmen erhalten Sie mit der Funktion hash_algos().Hinweis: Entfernt in PHP 7.1.0.
-
session.hash_bits_per_character
int -
session.hash_bits_per_character
gibt Ihnen die Möglichkeit, zu definieren wieviele Bit bei der Umwandlung der binären Prüfsummen-Daten in etwas Lesbares in jedem Zeichen gespeichert werden. Mögliche Werte sind '4' (0-9, a-f), '5' (0-9, a-v) und '6' (0-9, a-z, A-Z, "-", ",").Hinweis: Entfernt in PHP 7.1.0.
-
session.upload_progress.enabled
bool - Aktiviert die Überwachung des Upload-Fortschritts und füllt die entsprechende $_SESSION-Variable. Grundeinstellung 1 (aktiviert).
-
session.upload_progress.cleanup
bool -
Löscht die Fortschritts-Informationen, sobald alle POST-Daten gelesen
wurden (also der Upload abgeschlossen ist). Grundeinstellung 1
(aktiviert).
Hinweis: Es wird dringend empfohlen diese Funktion aktiviert zu lassen.
-
session.upload_progress.prefix
string -
Ein Präfix für den Namen des Schlüssels für den Upload-Fortschritt im
$_SESSION-Array. An diesen wird der Wert von
$_POST[ini_get("session.upload_progress.name")]
angehängt, um einen eindeutigen Schlüssel zu erhalten. Grundeinstellung "upload_progress_". -
session.upload_progress.name
string -
Der Name des Schlüssels im $_SESSION-Array, in
welchem die Fortschritts-Informationen gespeichert werden sollen. Siehe
auch
session.upload_progress.prefix.
Falls
$_POST[ini_get("session.upload_progress.name")]
nicht übergeben wird oder nicht verfügbar ist, wird kein Upload-Fortschritt aufgezeichnet. Grundeinstellung "PHP_SESSION_UPLOAD_PROGRESS". -
session.upload_progress.freq
mixed - Definiert, wie oft die Fortschritts-Information aktualisiert werden soll. Dieser Wert kann entweder in Bytes (d. h. Aktualisierung nachdem eine bestimmte Anzahl an Bytes empfangen wurde) oder in Prozent (d. h. Aktualisierung nachdem eine bestimmte Prozentzahl der gesamten Dateigröße empfangen wurde) angegeben werden. Grundeinstellung "1%".
-
session.upload_progress.min_freq
int - Die Zeit, die mindestens zwischen zwei Aktualisierungen vergehen muss. Grundeinstellung "1" (eine Sekunde).
-
session.lazy_write
bool -
Falls
session.lazy_write
auf 1 gesetzt ist, werden Daten nur gespeichert, nachdem sie sich geändert haben. Grundeinstellung 1 (aktiviert).
Der Upload-Fortschritt wird nur aufgezeichnet, wenn session.upload_progress.enabled aktiviert ist und die Variable $_POST[ini_get("session.upload_progress.name")] gesetzt ist. Siehe Session-Upload Fortschritt für weitere diesbezügliche Informationen.