dedlfix: PHP $_SESSION

Beitrag lesen

echo $begrüßung;

Wie schwierig ist es für einen potentiellen Angreifer Session-Variablen auszulesen?

Ohne weitere Sicherheitslücken ist es unmöglich.

Aber was ist mit den zu einer Session-ID gehörigen Variablen? Werden die vom Server verwaltet oder liegen die auch auf dem Client?

Wenn die Daten auf dem Client lägen, bräuchte man keine Session-ID, denn dann hätte man alles Relevante in jedem Client-Request, müsste aber auch alles Relevante immer wieder zum Client schicken. Und außerdem müsste man etwas gegen eine Manipulation unternehmen.

Die Session-Daten liegen in einer der ID zugeordneten Datei auf dem Server. (Normalerweise. Es gibt auch andere serverseitige Speichermöglichkeiten.) Bei Massenhostern ist es zudem möglich, dass alle Sessiondaten im selben globalen Verzeichnis abgelegt werden. Und da alle Mithostlinge Lese- und Schreibzugriff auf das Verzeichnis haben, ...

Darf man sensible Daten, wie die Verbindung zu einer Datenbank in Session-Variablen speichern?

Wenn du damit die Ressourcenkennung meinst, die du nach einem Connect bekommst, so ist das sinnlos, denn die Verbindung wird am Script-Ende automatisch geschlossen. Die Anmeldedaten hast du ja sowieso in irgendeinem Script oder einer Konfigurationsdatei stehen, die müssen nicht nochmal in eine Session.

Ist es sicher, ein Datenbankobjekt in einer Sessionvariable zu speichern?

Es ist so sicher oder unsicher wie für alle anderen Daten.

Es nützt nichts, eine Frage nach "sicher" zu stellen. Zum einen musst du dabei definieren, was du unter "sicher" verstehst, und zum anderen musst du das Prinzip hinter einer Lösung verstehen, um entscheiden zu können, ob sie in deinem konkreten Fall "sicher" ist oder nicht.

echo "$verabschiedung $name";