O'Reilly logo

PHP-Sicherheit: PHP/MySQL-Webanwendungen sicher programmieren by Stefan Esser, Christopher Kunz

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

1737.2 Permissive oder strikte Session-Systeme
Session-IDs in einem
versteckten Formularfeld
Der Transport der Session in einem versteckten Formularfeld sieht
folgendermaßen aus:
<input type="hidden" name="PHPSESSID"
value="abef34892eac8901ed567827385efab3" />
Diese Session-ID wird beim Abschicken des Formulars mit an den Ser-
ver gesendet und steht für den Entwickler im
$_POST-Array zur Verfü-
gung.
7.2 Permissive oder strikte Session-Systeme
Permissive Systeme
Permissiv bedeutet »erlaubend« oder »freizügig«, und genau da liegt
auch schon das Problem. Jeder bekommt eine gültige Session-ID. Falls
eine vom Client übermittelte Session-ID noch nicht existiert, wird
diese auf dem Server angelegt. Das bedeutet, ein Benutzer kann sich
eine Session-ID ausdenken und diese an den Server übermitteln. Wenn
dieser die ID akzeptiert und die Session-Datei auf dem Server anlegt,
handelt es sich um ein permissives Session-System, da beim Entwurf
der Session-Unterstützung Wert auf größtmögliche Flexibilität gelegt
wurde. Der Einbau von Restriktionen wird in PHP auf den Benutzer
abgewälzt.
Restriktive Systeme
Würde es sich um ein striktes System handeln, würde diese Ses-
sion-ID verworfen und durch eine von der Skriptsprache erzeugte ID
ersetzt werden. Ein permissives Session-System ist für Angriffe wie
»Session Riding«, also das Ausführen von Aktionen unter fremden
Sessions, und auch Phishing wesentlich anfälliger als ein restriktives.
PHP implementiert das permissive Session-Modell.
Grundsätzlich sollte bei der Vergabe einer Session-ID geprüft wer-
den, ob dieser Nutzer schon authentifiziert ist oder ob ihm schon eine
Rolle zugeordnet wurde. Diese Daten müssen dann wieder gelöscht
werden, und der Nutzer muss sich neu authentifizieren. Jede Seite in
einer Applikation muss diese Authentifizierungsdaten erneut prüfen,
um den Quereinstieg in tiefer liegende Ebenen einer Applikation zu
blockieren oder um eine ungewollte Befugniserweiterung zu verhin-
dern. Seiten, die keine Authentifizierung erfordern, sollten mit einer
anderen Session versehen werden und auch keine Informationen über
vertrauliche Daten enthalten.
1<<C=S7<938C?<<D5>(951E6(5CC9?>C9>45B*'!?45B9>59>5=F5BCD53;
D5>?B=E<1B65<4F5BJ938D5>

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required