Eine Session in Reinform wie sie PHP bietet, also ohne weitere Sicherheitsvorkehrungen, ist nicht vollkommen sicher. Der Inhaber wird durch die Session-ID wiedererkannt. Sendet ein Dritter die selbe SID an den Server, ist er in die Session eingedrungen.
Eine SID zu erraten ist allerdings nahezu unmöglich, die weitaus größere Gefahr besteht in direktem Diebstahl (Dritter "liest mit", z.B. in einem Internetcafé oder durch abhören des Datenverkehrs in einem WLAN).
Die Session dauert immer nur 3min und wenn jemand anderes eine SID die besteht erstellt ist das in meinem Fall nicht schädlich höchstens wenn er eigene erstellen könnte.
...und wenn jemand anderes eine SID die besteht erstellt ist das in meinem Fall nicht schädlich höchstens wenn er eigene erstellen könnte.
Aber eine eigens erstellte Session ID wird doch dein Server nicht kennen
Das Problem durch den Session Klau könnte sein, dass ein Unberechtigter Zugriff auf Daten erhalten könnte, die ihn nichts angehen. Was aber nur geht wenn er eine deinem Server bekannte ID klaut.
[color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color] Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Ob du sie nun per Cookie oder GET Parameter überträgst, wenn sich einer zwischen Dich und den Server schalten kann, dann kommt er wohl eh an alles ran was nicht via SSL übertragen wird.
[color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color] Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
ja, ist richtig, aber get hat noch eine weitere schwachstelle.
wird der link z.b. gepostet oder gebookmarkt kann jeder diese session aufnehmen bzw. wird immer wieder die alte session-id benutzt. und das ist halt bei cookies nicht der fall. weitere schwachstelle ist das auslesen des referers, aber das hatten wir ja schon alles und muss hier nicht wieder neu disskutiert werden
[color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color] Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Original geschrieben von jahlives Drum Session mit einer Ablaufzeit in die DB rein. Und dann ein Putzscript drüber, dass alle abgelaufenen Sessions über'n Jordan schickt.
ja, genau so habe ich es auch vor (habe nämlich vor, ne eigene sessionverwaltung zu schreiben).
gedanken zum worstcase:
1 user hat cookies deaktiviert.
2 user bookmarkt den login-link (mit session-id)
3 user postet einen link irgendwo in einem forum (ebenfalls mit id)
so, jedesmal, wenn sich jetzt der benutzer einloggt, wird immer eine session mit der selben id erstellt und damit erhöht sich auch die chance, dass der gepostete link mit den vollen benutzerrechten aktiv ist.
cookies möchte ich nicht vorschreiben, werde wohl bei jedem login session_regenerate_id(true); verwenden und im falle von get noch einen zusätzlichen ip-check durchführen.
das sind meine gedanken zu diesem thema, kann aber auch sein, dass ich falsch liege - meinungen sind willkommen .
so, jedesmal, wenn sich jetzt der benutzer einloggt, wird immer eine session mit der selben id erstellt und damit erhöht sich auch die chance, dass der gepostete link mit den vollen benutzerrechten aktiv ist.
Also wenn ich ne Session mittels session_destroy() putze bekomme ich mit an Sicherheit grenzender Wahrscheinlichkeit nicht nochmal dieselbe ID. Wäre mir zumindest noch nicht aufgefallen
Wenn du die Session ID in die DB einträgst, dann trage doch noch eine Zeit ein, zu welcher der User den nächsten Klick ausgeführt haben muss. Bei jedem Klick des Users wird die Session, solange die vorgegebene Zeit noch nicht erreicht ist, die Zeit um eine gewisse Spanne verlängert.
Wenn sie schon abgelaufen ist, dann bekommt der User beim nächsten Klick ne Meldung vonwegen Ausloggen wegen Inaktivität.
IP Check kannst du machen, aber voll darauf verlassen würde ich mich nicht. Habe schon Provider gesehen die die IPs praktisch im Minuten-Takt wechseln. Dann würdest du u.U. berechtige User zum erneuten Login zwingen...
So long
[color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color] Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Original geschrieben von jahlives
[B]Also wenn ich ne Session mittels session_destroy() putze bekomme ich mit an Sicherheit grenzender Wahrscheinlichkeit nicht nochmal dieselbe ID. Wäre mir zumindest noch nicht aufgefallen ]
ist aber so: "session_start() erzeugt eine Session oder nimmt die aktuelle wieder auf, die auf der Session-ID basiert, die mit einer Anfrage, z.B. durch GET, POST oder ein Cookie, übermittelt wurde"
wenn das sessioncookie gelöscht wurde, ist das nicht der fall, aber wenn die sid am url hängt, schon.
Wenn du die Session ID in die DB einträgst, dann trage doch noch eine Zeit ein, zu welcher der User den nächsten Klick ausgeführt haben muss. Bei jedem Klick des Users wird die Session, solange die vorgegebene Zeit noch nicht erreicht ist, die Zeit um eine gewisse Spanne verlängert.
Wenn sie schon abgelaufen ist, dann bekommt der User beim nächsten Klick ne Meldung vonwegen Ausloggen wegen Inaktivität.
ja, habe ich ja auch so vor, ändert aber nichts am problem
IP Check kannst du machen, aber voll darauf verlassen würde ich mich nicht. Habe schon Provider gesehen die die IPs praktisch im Minuten-Takt wechseln. Dann würdest du u.U. berechtige User zum erneuten Login zwingen...
wie gesagt, dient nur der zusätzlichen sicherheit, wenn die id per get übermittelt wird. dann noch mit einem hinweis, dass cookies aktiviert werden sollen.
oder nimmt die aktuelle wieder auf, die auf der Session-ID basiert, die mit einer Anfrage, z.B. durch GET, POST oder ein Cookie, übermittelt wurde"
Also wenn du sie mit session_destroy() putzt, dann wird diese alte Session nicht mehr erkannt. Ich habe ein Captcha das ebenfalls mit Session arbeitet. Als ich die Session Var mit dem Code einfach nur un-gesettet habe, konnte man mit dem Zurückbutton des Browsers easy wieder auf die Seite. Das Script hat den Code aus der Session gelesen und wieder ein Bilchen mit dem Code kreiert.
Nachdem ich aber die Session komplett gekillt habe, bringt ein Zurückklick wohl wieder die Captchaseite mit dem Code aus dem Cache, aber die Eingabe desselbigen führt zu überhaupt nix ausser einer netten Fehlermeldung.
[color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color] Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Kommentar