cvs: phpdoc-de /reference/session reference.xml
| From: | Martin Samesch | Date: | Fri, 31 Jan 2003 17:31:51 +0000 |
| Subject: | cvs: phpdoc-de /reference/session reference.xml | ||
| Groups: | php.doc.de | ||
| Request: | Send a blank email to doc-de+get-482@lists.php.net to get a copy of this message | ||
samesch Fri Jan 31 12:31:51 2003 EDT
Modified files:
/phpdoc-de/reference/session reference.xml
Log:
syncing with EN Rev. 1.4
Index: phpdoc-de/reference/session/reference.xml diff -u phpdoc-de/reference/session/reference.xml:1.11 phpdoc-de/reference/session/reference.xml:1.12 --- phpdoc-de/reference/session/reference.xml:1.11 Tue Oct 22 06:09:05 2002 +++ phpdoc-de/reference/session/reference.xml Fri Jan 31 12:31:51 2003 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.11 $ --> -<!-- EN-Revision: 1.20 Maintainer: samesch Status: ready --> +<!-- $Revision: 1.12 $ --> +<!-- EN-Revision: 1.27 Maintainer: samesch Status: ready --> <reference id="ref.session"> <title>Session Funktionen</title> <titleabbrev>Sessions</titleabbrev> @@ -50,63 +50,98 @@ Die Behandlung von Sessions wurde in PHP 4.0 eingeführt. </para> </note> + <note> + <para> + Bitte beachten Sie beim Arbeiten mit Sessions, dass der + Datensatz einer Session nicht angelegt wird, bevor eine + Variable mit der Funktion <function>session_register</function> + registriert oder dem superglobalen Array + <varname>$_SESSION</varname> ein neuer Schlüssel hinzugefügt + wird. Das gilt auch dann, wenn eine Session mit der Funktion + <function>session_start</function> gestartet wurde. + </para> + </note> </section> <section id="session.security"> <title>Sessions and security</title> <para> - Wenn Sie Sessions verwenden, bedeutet das nicht, dass Sie - absolut sicher sein können, dass die Session-Daten nur vom - jeweiligen Benutzer gesehen werden können. Es ist wichtig, dass - Sie beim Speichern und Anzeigen sensibler Daten daran denken. - Wenn Sie Daten in einer Session speichern, sollten Sie sich immer - fragen, wie groß der Schaden ist, wenn jemand anderes diese - Informationen sieht oder inwieweit Ihre Anwendung davon betroffen - ist, wenn die Session in Wirklichkeit von jemand anderem benutzt - wird. - </para> - <para> - Kann zum Beispiel jemand, der eine Session übernimmt, als dieser - Benutzer eine Nachricht an ein Forum senden und stellt das ein - großes Problem dar? Oder vielleicht kann er sehen, was der - ursprüngliche Benutzer zu bestellen beabsichtigte, weil er - Zugriff auf den Einkaufswagen dieses Benutzers bekommt. Für einen - Blumenladen wäre das offensichtlich weniger dramatisch als für - eine Apotheke. - </para> - <para> - Deshalb sollte es beim Umgang mit sensiblen Daten immer - zusätzliche Methoden geben, mit denen festgestellt werden kann, - ob es sich um eine gültige Session handelt. Sessions sind als - Mechanismus für sichere Authentifizierung nicht verlässlich. - </para> - <para> - Sessions vertrauen auf die Session-ID, was bedeutet, dass eine - Session 'gestohlen' werden kann, indem die Session-ID gestohlen - wird. Dies kann durch Verwendung eines Cookies, speziell eines - Session-Cookies, erschwert werden, aber das macht es keinesfalls - unmöglich und stützt sich immer noch darauf, dass der Benutzer - alle Browserfenster schließt, damit das Cookie verfällt. Außerdem - können auch Session-Cookies in einem Netzwerk ausgeschnüffelt - werden oder von einem Proxyserver protokolliert werden. + Externe Links: <ulink url="&url.session-fixation;">Session + fixation</ulink> + </para> + <para> + Das Session-Modul bietet keine Garantie dafür, dass + Informationen, die Sie in einer Session speichern, nur vom + Benutzer gesehen werden können, der die Session erzeugt hat. Sie + müssen zusätzliche Maßnahmen ergreifen, um die Integrität der + Session ihrer Wichtigkeit angemessen aktiv zu schützen. + </para> + <para> + Schätzen Sie die Wichtigkeit der Daten ab, die in Ihren Sessions + transportiert werden und treffen Sie zusätzliche Schutzmaßnahmen + -- in der Regel bezahlen Sie dafür mit einer geringeren + Benutzerfreundlichkeit. +###################### +################### +############### +########### +####### + Wenn Sie z.B. Benutzer vor ... simple social engineering tactics +####### +########### +############### +################### +###################### + schützen wollen, müssen Sie session.use_only_cookies altivieren. + Cookies müssen dann auf jeden Fall aktiviert sein. + </para> + <para> + Es gibt mehrere Wege, über die eine Sessio-ID an Dritte gelangen + kann. Eine entführte Session-ID ermöglicht diesen, auf alle Daten + zuzugreifen, die mit dieser Session-ID verbunden sind. Erstens + sind das URLs, die Session-IDs enthalten. Wenn Sie auf eine + externe Site verweisen, könnte die URL inklusive Session-ID in + den Referrer-Logs der externen Site gespeichert werden. Zweitens + kann ein aktiverer Angreifer Ihren Netzwerkverkehr abhören. Falls + Ihr Netzwerkverkehr nicht verschlüsselt ist, werden Session-IDs + im Klartext über das Netzwerk übertragen. Hier ist die Lösung, + auf Ihrem Server SSL zu implementieren und die Verwendung für + Ihre Benutzer obligatorisch zu machen. + +There are several ways to leak an existing session id to third +parties. A leaked session id enables the third party to access all +resources which are associated with a specific id. First, URLs +carrying session ids. If you link to an external site, the URL +including the session id might be stored in the external site's +referrer logs. Second, a more active attacker might listen to your +network traffic. If it is not encrypted, session ids will flow in +plain text over the network. The solution here is to implement SSL +on your server and make it mandatory for users. </para> </section> <section id="session.requirements"> &reftitle.required; &no.requirement; - </section> + <note> + <para> + Optional können Sie - <section id="session.installation"> - &reftitle.install; - <para> - Die Unterstützung von Sessions ist in PHP standardmäßig - aktiviert. Falls Sie Ihr PHP ohne Unterstützung von Sessions - bauen wollen, müssen Sie bei der Konfiguration die Option - <option role="configure">--disable-session</option> angeben. - </para> + Optionally you can use shared memory allocation (mm), developed + by Ralf S. Engelschall, for session storage. You have to + download <ulink url="&url.mm;">mm</ulink> and install it. This + option is not available for Windows platforms. Note that the + session storage module for mm does not guarantee that concurrent + accesses to the same session are properly locked. It might be + more appropiate to use a shared memory based filesystem (such as + tmpfs on Solaris/Linux, or /dev/md on BSD) to store sessions in + files, because they are properly locked. + </para> + </note> </section> + &reference.session.configure; + &reference.session.ini; <section id="session.resources"> @@ -270,25 +305,23 @@ </example> </para> <para> - Wenn - <link + Wenn <link linkend="ini.register-globals"><literal>register_globals</literal></link> aktiviert ist, dann referenzieren die globalen Variablen und die - Einträge von <varname>$_SESSION</varname> für Session-Variablen, - die in vorherigen Instanzen der Session registriert wurden, - automatisch den selben Wert. + Einträge von <varname>$_SESSION</varname> automatisch die selben + Werte, die in der vorherigen Instanz der Session registriert + wurden. </para> <para> - Wenn Sie darüber hinaus eine neue Session-Variable mittels ++ There is a defect in PHP 4.2.3 and earlier. + Wenn Sie eine neue Session-Variable mittels <function>session_register</function> registrieren, referenzieren der Eintrag im globalen Bereich und der <varname>$_SESSION</varname>-Eintrag bis zum nächsten - <function>session_start</function> nicht den selben Wert (gilt - nur bis einschließlich PHP 4.2). D.h. eine Änderung an der - globalen Variablen wird nicht vom - <varname>$_SESSION</varname>-Eintrag widergespiegelt. Es ist - unwahrscheinlich, dass das in der Praxis eine Rolle spielt und - wurde in PHP 4.3 korrigiert. + <function>session_start</function> nicht den selben Wert. D.h. + eine Änderung an der neu registrierten globalen Variablen wird + nicht vom <varname>$_SESSION</varname>-Eintrag widergespiegelt. ++ This has been corrected in PHP 4.3. </para> </section> @@ -311,10 +344,9 @@ </para> <para> Das Session-Modul unterstützt beide Methoden. Cookies sind - optimal, aber da sie nicht zuverlässig sind (Clients müssen - sie nicht unbedingt akzeptieren), können wir uns nicht auf sie - verlassen. Die zweite Methode hängt die Session-ID direkt an die - URLs. + optimal, aber da sie nicht immer zur Verfügung stehen, bieten wir + auch noch eine Alternative an. Die zweite Methode hängt die + Session-ID direkt an die URLs. </para> <para> Falls PHP mit <link @@ -329,13 +361,42 @@ <literal>SID</literal> hat entweder die Form <literal>session_name=session_id</literal> oder ist eine leere Zeichenkette. +- PHP is capable of doing this transparently if compiled with <link +- linkend="install.configure.enable-trans-sid"> +- <literal>--enable-trans-sid</literal></link>. This option is always +- enabled in PHP 4.2 and later. If you enable this option, relative +URIs +- will be changed to contain the session id automatically. +Alternatively, +- you can use the constant <literal>SID</literal> which is defined, if +the +- client did not send the appropriate cookie. <literal>SID</literal> is +- either of the form <literal>session_name=session_id</literal> or is an +- empty string. ++ PHP is capable of transforming links transparently. Unless you are +using ++ PHP 4.2 or later, you need to enable it manually when building PHP. ++ Under UNIX, pass <link linkend="install.configure.enable-trans-sid"> ++ <literal>--enable-trans-sid</literal></link> to configure. If this +build ++ option and the run-time option session.use_trans_sid are enabled, ++ relative URIs will be changed to contain the session id automatically. <note> <para> Die &php.ini;-Anweisung <link linkend="ini.arg-separator.output">arg_separator.output</link> ermöglicht es, die Trennung von Argumenten anzupassen. ++ For full XHTML conformance, specify &amp; there. </para> </note> ++ </para> ++ <para> ++ Alternatively, you can use the constant <literal>SID</literal> which +is ++ always defined. If the client did not send an appropriate session ++ cookie, it has the form <literal>session_name=session_id</literal>. ++ Otherwise, it expands to an empty string. Thus, you can embed it ++ unconditionally into URLs. </para> <para> Das folgende Beispiel demonstriert, wie eine Variable registriert
Index: phpdoc-de/reference/session/reference.xml diff -u phpdoc-de/reference/session/reference.xml:1.11 phpdoc-de/reference/session/reference.xml:1.12 --- phpdoc-de/reference/session/reference.xml:1.11 Tue Oct 22 06:09:05 2002 +++ phpdoc-de/reference/session/reference.xml Fri Jan 31 12:31:51 2003 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.11 $ --> -<!-- EN-Revision: 1.20 Maintainer: samesch Status: ready --> +<!-- $Revision: 1.12 $ --> +<!-- EN-Revision: 1.27 Maintainer: samesch Status: ready --> <reference id="ref.session"> <title>Session Funktionen</title> <titleabbrev>Sessions</titleabbrev> @@ -50,63 +50,98 @@ Die Behandlung von Sessions wurde in PHP 4.0 eingeführt. </para> </note> + <note> + <para> + Bitte beachten Sie beim Arbeiten mit Sessions, dass der + Datensatz einer Session nicht angelegt wird, bevor eine + Variable mit der Funktion <function>session_register</function> + registriert oder dem superglobalen Array + <varname>$_SESSION</varname> ein neuer Schlüssel hinzugefügt + wird. Das gilt auch dann, wenn eine Session mit der Funktion + <function>session_start</function> gestartet wurde. + </para> + </note> </section> <section id="session.security"> <title>Sessions and security</title> <para> - Wenn Sie Sessions verwenden, bedeutet das nicht, dass Sie - absolut sicher sein können, dass die Session-Daten nur vom - jeweiligen Benutzer gesehen werden können. Es ist wichtig, dass - Sie beim Speichern und Anzeigen sensibler Daten daran denken. - Wenn Sie Daten in einer Session speichern, sollten Sie sich immer - fragen, wie groß der Schaden ist, wenn jemand anderes diese - Informationen sieht oder inwieweit Ihre Anwendung davon betroffen - ist, wenn die Session in Wirklichkeit von jemand anderem benutzt - wird. - </para> - <para> - Kann zum Beispiel jemand, der eine Session übernimmt, als dieser - Benutzer eine Nachricht an ein Forum senden und stellt das ein - großes Problem dar? Oder vielleicht kann er sehen, was der - ursprüngliche Benutzer zu bestellen beabsichtigte, weil er - Zugriff auf den Einkaufswagen dieses Benutzers bekommt. Für einen - Blumenladen wäre das offensichtlich weniger dramatisch als für - eine Apotheke. - </para> - <para> - Deshalb sollte es beim Umgang mit sensiblen Daten immer - zusätzliche Methoden geben, mit denen festgestellt werden kann, - ob es sich um eine gültige Session handelt. Sessions sind als - Mechanismus für sichere Authentifizierung nicht verlässlich. - </para> - <para> - Sessions vertrauen auf die Session-ID, was bedeutet, dass eine - Session 'gestohlen' werden kann, indem die Session-ID gestohlen - wird. Dies kann durch Verwendung eines Cookies, speziell eines - Session-Cookies, erschwert werden, aber das macht es keinesfalls - unmöglich und stützt sich immer noch darauf, dass der Benutzer - alle Browserfenster schließt, damit das Cookie verfällt. Außerdem - können auch Session-Cookies in einem Netzwerk ausgeschnüffelt - werden oder von einem Proxyserver protokolliert werden. + Externe Links: <ulink url="&url.session-fixation;">Session + fixation</ulink> + </para> + <para> + Das Session-Modul bietet keine Garantie dafür, dass + Informationen, die Sie in einer Session speichern, nur vom + Benutzer gesehen werden können, der die Session erzeugt hat. Sie + müssen zusätzliche Maßnahmen ergreifen, um die Integrität der + Session ihrer Wichtigkeit angemessen aktiv zu schützen. + </para> + <para> + Schätzen Sie die Wichtigkeit der Daten ab, die in Ihren Sessions + transportiert werden und treffen Sie zusätzliche Schutzmaßnahmen + -- in der Regel bezahlen Sie dafür mit einer geringeren + Benutzerfreundlichkeit. +###################### +################### +############### +########### +####### + Wenn Sie z.B. Benutzer vor ... simple social engineering tactics +####### +########### +############### +################### +###################### + schützen wollen, müssen Sie session.use_only_cookies altivieren. + Cookies müssen dann auf jeden Fall aktiviert sein. + </para> + <para> + Es gibt mehrere Wege, über die eine Sessio-ID an Dritte gelangen + kann. Eine entführte Session-ID ermöglicht diesen, auf alle Daten + zuzugreifen, die mit dieser Session-ID verbunden sind. Erstens + sind das URLs, die Session-IDs enthalten. Wenn Sie auf eine + externe Site verweisen, könnte die URL inklusive Session-ID in + den Referrer-Logs der externen Site gespeichert werden. Zweitens + kann ein aktiverer Angreifer Ihren Netzwerkverkehr abhören. Falls + Ihr Netzwerkverkehr nicht verschlüsselt ist, werden Session-IDs + im Klartext über das Netzwerk übertragen. Hier ist die Lösung, + auf Ihrem Server SSL zu implementieren und die Verwendung für + Ihre Benutzer obligatorisch zu machen. + +There are several ways to leak an existing session id to third +parties. A leaked session id enables the third party to access all +resources which are associated with a specific id. First, URLs +carrying session ids. If you link to an external site, the URL +including the session id might be stored in the external site's +referrer logs. Second, a more active attacker might listen to your +network traffic. If it is not encrypted, session ids will flow in +plain text over the network. The solution here is to implement SSL +on your server and make it mandatory for users. </para> </section> <section id="session.requirements"> &reftitle.required; &no.requirement; - </section> + <note> + <para> + Optional können Sie - <section id="session.installation"> - &reftitle.install; - <para> - Die Unterstützung von Sessions ist in PHP standardmäßig - aktiviert. Falls Sie Ihr PHP ohne Unterstützung von Sessions - bauen wollen, müssen Sie bei der Konfiguration die Option - <option role="configure">--disable-session</option> angeben. - </para> + Optionally you can use shared memory allocation (mm), developed + by Ralf S. Engelschall, for session storage. You have to + download <ulink url="&url.mm;">mm</ulink> and install it. This + option is not available for Windows platforms. Note that the + session storage module for mm does not guarantee that concurrent + accesses to the same session are properly locked. It might be + more appropiate to use a shared memory based filesystem (such as + tmpfs on Solaris/Linux, or /dev/md on BSD) to store sessions in + files, because they are properly locked. + </para> + </note> </section> + &reference.session.configure; + &reference.session.ini; <section id="session.resources"> @@ -270,25 +305,23 @@ </example> </para> <para> - Wenn - <link + Wenn <link linkend="ini.register-globals"><literal>register_globals</literal></link> aktiviert ist, dann referenzieren die globalen Variablen und die - Einträge von <varname>$_SESSION</varname> für Session-Variablen, - die in vorherigen Instanzen der Session registriert wurden, - automatisch den selben Wert. + Einträge von <varname>$_SESSION</varname> automatisch die selben + Werte, die in der vorherigen Instanz der Session registriert + wurden. </para> <para> - Wenn Sie darüber hinaus eine neue Session-Variable mittels ++ There is a defect in PHP 4.2.3 and earlier. + Wenn Sie eine neue Session-Variable mittels <function>session_register</function> registrieren, referenzieren der Eintrag im globalen Bereich und der <varname>$_SESSION</varname>-Eintrag bis zum nächsten - <function>session_start</function> nicht den selben Wert (gilt - nur bis einschließlich PHP 4.2). D.h. eine Änderung an der - globalen Variablen wird nicht vom - <varname>$_SESSION</varname>-Eintrag widergespiegelt. Es ist - unwahrscheinlich, dass das in der Praxis eine Rolle spielt und - wurde in PHP 4.3 korrigiert. + <function>session_start</function> nicht den selben Wert. D.h. + eine Änderung an der neu registrierten globalen Variablen wird + nicht vom <varname>$_SESSION</varname>-Eintrag widergespiegelt. ++ This has been corrected in PHP 4.3. </para> </section> @@ -311,10 +344,9 @@ </para> <para> Das Session-Modul unterstützt beide Methoden. Cookies sind - optimal, aber da sie nicht zuverlässig sind (Clients müssen - sie nicht unbedingt akzeptieren), können wir uns nicht auf sie - verlassen. Die zweite Methode hängt die Session-ID direkt an die - URLs. + optimal, aber da sie nicht immer zur Verfügung stehen, bieten wir + auch noch eine Alternative an. Die zweite Methode hängt die + Session-ID direkt an die URLs. </para> <para> Falls PHP mit <link @@ -329,13 +361,42 @@ <literal>SID</literal> hat entweder die Form <literal>session_name=session_id</literal> oder ist eine leere Zeichenkette. +- PHP is capable of doing this transparently if compiled with <link +- linkend="install.configure.enable-trans-sid"> +- <literal>--enable-trans-sid</literal></link>. This option is always +- enabled in PHP 4.2 and later. If you enable this option, relative +URIs +- will be changed to contain the session id automatically. +Alternatively, +- you can use the constant <literal>SID</literal> which is defined, if +the +- client did not send the appropriate cookie. <literal>SID</literal> is +- either of the form <literal>session_name=session_id</literal> or is an +- empty string. ++ PHP is capable of transforming links transparently. Unless you are +using ++ PHP 4.2 or later, you need to enable it manually when building PHP. ++ Under UNIX, pass <link linkend="install.configure.enable-trans-sid"> ++ <literal>--enable-trans-sid</literal></link> to configure. If this +build ++ option and the run-time option session.use_trans_sid are enabled, ++ relative URIs will be changed to contain the session id automatically. <note> <para> Die &php.ini;-Anweisung <link linkend="ini.arg-separator.output">arg_separator.output</link> ermöglicht es, die Trennung von Argumenten anzupassen. ++ For full XHTML conformance, specify &amp; there. </para> </note> ++ </para> ++ <para> ++ Alternatively, you can use the constant <literal>SID</literal> which +is ++ always defined. If the client did not send an appropriate session ++ cookie, it has the form <literal>session_name=session_id</literal>. ++ Otherwise, it expands to an empty string. Thus, you can embed it ++ unconditionally into URLs. </para> <para> Das folgende Beispiel demonstriert, wie eine Variable registriert