![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.590
|
Hallo,
aus aktuellen Anlass frage ich mich gerade, wo der Vorteil von einem eigenen gegenüber dem PHP-internen SessionManagement liegt und wie man dies am besten umsetzt, falls überhaupt sinnvoll. Das Simple Machines Forum nutzt dies ja. Dort werden afaik die Sessiondaten in der Datenbank gespeichert!? Ich persönlich sehe aber gar keinen Anhaltspunkt, warum das denn überhaupt besser sein sollte. Geht es dort um Performance-/Sicherheitsaspekte oder nur um eine Abstraktion mehr im Gesamtsystem? Würde mich über eine Diskussion diesbzgl. freuen. Danke für Eure rege Teilnahme. Grüße, Ben. |
|
|
|
|
|
Nach oben #2 |
|
Erfahrener Benutzer
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 625
|
Ich persönlich sehe da wenn überhaupt eigentlich auch nur den Sinn drin, dass man bei einem eigenen System dieses besser in eine reine OOP-Umgebung bringen kann, aber das wars dann auch schon!? Ich kann mir nicht vorstellen, dass eine Funktion, die in PHP geschrieben wurde schneller sein soll, als eine Funktion, die in C geschrieben wurde und direkt in PHP kompiliert ist!?
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
|
|
|
|
|
Nach oben #3 | |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.590
|
Jou, das glaube ich auch eher nicht. Sagen wir mal so .. ich wäre überrascht.
Bzgl. Zitat:
Kleinen Codeschnipsel parat? |
|
|
|
|
|
|
Nach oben #4 | |
|
Gast
Beiträge: n/a
|
Es geht nur um Sicherheitsaspekte. Eine weitere Abstraktionsschicht hast du nicht weil trotzdem über $_SESSION ganz normal zugegriffen wird.
Zur Sicherheit: Wenn deine Anwendung die einzige auf dem Server ist, so hilft dir das Sessionhandling über eine DB nichts. Da allerdings die meisten E-Commerce, CM Systeme auf Shared Hosts laufen, kann jeder User der Zugriff auf den Server hat die Sessiondaten und IDs auslesen. Sessions werden nämlich einfach in einem temporären Verzeichnis als Dateien am Server abgelegt. Durch die Einstellung session.save_path bekommt man den Pfad zum Verzeichnis. Jetzt kann man sich ein einfachs Script schreiben, dass dieses Verzeichnis öffnet die Dateien ausliest und ausliest. Damit ist es ein leichtes eine andere Anwendung am gleichen Server zu knacken. Ein Script könnte so in etwa aussehen: PHP-Code:
EDIT: Zitat:
Für ein eigenes Sessionhandling verwendet man session_set_save_handler (...), weil sich da praktisch PHP um alles kümmert und es schnell und effizient ist. jay Geändert von Jay (04.06.2006 um 17:46 Uhr). |
|
|
|
|
Nach oben #5 |
|
Erfahrener Benutzer
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 625
|
Ich sagte nicht, dass ich das habe, ich sagte, dass es das einzige wäre, was in meinen Augen Sinn machen WÜRDE, man beachte den Konjunktiv
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
|
|
|
|
|
Nach oben #6 | ||
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.590
|
Zitat:
Zitat:
@MrNiceGuy: |
||
|
|
|
|
|
Nach oben #7 | |
|
Gast
Beiträge: n/a
|
Zitat:
Jay |
|
|
|
|
Nach oben #9 |
|
Erfahrener Benutzer
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 625
|
Hmm... Sehr interessant, da hatte ich noch garnicht drüber nachgedacht!? Aber bei meinem Webserver ist es zum Beispiel so, dass jede Domain seinen eigenen Benutzer hat, ich weiß allerdings gerade nicht, wie die Session-Datei im /tmp aussieht, könnte ja sein, dass die sowieso nur lese-rechte auf den Benutzer hat!? Denn sonst könnte man ja auch, wie du es gerade sagtest, Jay, einfach auf die Scripte selber zugreifen und dann hilft dir auch das Schreiben in die DB nicht mehr!?
EDIT: @ben: Die Funktionen serialize() und das Pendant unserialize() sollten die helfen.
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
|
|
|
|
|
Nach oben #10 | |
|
Gast
Beiträge: n/a
|
Zitat:
@Ben http://at.php.net/session_set_save_handler Da ist ein Beispiel angeführt. Das verwendet wegen Einfachheit Dateien. Für eine DB müsstest du halt anstatt dateien zu schreiben und zu löschen SQL Queries verwenden EDIT: Zur Datei (ganz überlesen Name: sess_sessionid Inhalt dürfe so in etwa aussehen wenn $_SESSION['asdf'] auf "jklö" gesetzt ist: asdf|s:4:"jklö"; Würde man das serialisieren, dann würde das so aussehen {s:4:"asdf";s:4:"jklö";} Geändert von Jay (04.06.2006 um 18:12 Uhr). |
|
|
|
|
Nach oben #12 |
|
Neuer Benutzer
Registriert seit: 20.03.2006
Beiträge: 5
|
Hier ein simples, selbsterklärendes Session Handler System.
PHP-Code:
|
|
|
|
|
|
Nach oben #13 |
|
Goldman.de
Registriert seit: 09.10.2005
Ort: Frankfurt am Main
Beiträge: 190
|
- wenn man volle Kontrolle über sein Sessionhandling haben will - Sessionmanagement in Verbindung mit Usermanagement ( xml basierend ) als Ansatz: session.lib.inc PHP-Code:
|