Sicherheit Sessions
Marc
- php
0 Julian von Mendel0 rob
Ich arbeite gerade an einem Projekt, dass mittels Login und sessions funktioniert. Nun soll natürlich möglichst vermieden werden, dass jemand unberechtigterweise eine Session nutzen soll.
Der eigentliche Login-Vorgang geht so, dass jemand seinen Zugangsnamen und sein Passwort eingibt. Dann wird in der DB nach der entsprechenden Kombination gesucht. Wird sie gefunden (sind also Zugangsname und Passwort korrekt), wird in das Array $_SESSION['zugangsname'] der Zugangsname geschrieben, ansonsten erhält der User eine Fehlermeldung. Auf jeder Seite wird nun dieses Feld auf Inhalt überprüft.
Die Sessio-ID wird wegen technischer Kompatibilität übertragen. Nun sind meine Fragen an die, die sich auskenne ;):
-Ist dieses Login-Verfahren halbwegs sicher?
-Kann man eine laufende Session besser schützen und ist das überhaupt nötig?
Hi Marc!
-Ist dieses Login-Verfahren halbwegs sicher?
Ja.
-Kann man eine laufende Session besser schützen und ist das überhaupt nötig?
Du kannst die Session mit der IP und evtl. mit dem User-Agent (nicht ganz so gut, weil dieser manchmal zur Session-Laufzeit geändert wird) verknüpfen, das verhindert, dass ein anderer User (in den meisten Fällen mit anderer IP) die Session-ID des ersten zufällig errät. Nötig ist das wohl nicht wirklich - bzw. es kommt auf die Daten an, die du da überträgst.
Schöne Grüße
Julian
Hi Julian,
Du kannst die Session mit der IP und evtl. mit dem User-Agent (nicht ganz so gut, weil dieser manchmal zur Session-Laufzeit geändert wird) ...
Richtig, das ist nicht so gut - z.B. AOL User kommen bei jedem Seitenaufruf ueber einen anderen Proxyserver rein. Ich halte eine Ueberpruefung der IP nicht fuer sonderlich sinnvoll - interessanter waere vielleicht, dass man die Session ID nach Moeglichkeit nicht in der URL mitgibt, damit der User sie nicht versehentlich an andere Leute weitergibt.
MfG, Dennis.
Hi Julian,
Du kannst die Session mit der IP und evtl. mit dem User-Agent (nicht ganz so gut, weil dieser manchmal zur Session-Laufzeit geändert wird) ...
Richtig, das ist nicht so gut - z.B. AOL User kommen bei jedem Seitenaufruf ueber einen anderen Proxyserver rein. Ich halte eine Ueberpruefung der IP nicht fuer sonderlich sinnvoll - interessanter waere vielleicht, dass man die Session ID nach Moeglichkeit nicht in der URL mitgibt, damit der User sie nicht versehentlich an andere Leute weitergibt.
MfG, Dennis.
Aber welche Möglichkeit gibt es denn noch? Die Benutzer dürfen i.d.R. keine Cookies benutzen, das scheidet also aus. DieBenutzer werden zwar angehalten, sich nach jeder Session auszuloggen, um die Session ordnungsgemäß zu beenden, allerdings kann man da natürlich nicht sicher sein, dass es auch jeder macht.
Hi!
Die Benutzer werden zwar angehalten, sich nach jeder Session auszuloggen, um die Session ordnungsgemäß zu beenden, allerdings kann man da natürlich nicht sicher sein, dass es auch jeder macht.
Aber die Session hat nur eine bestimmte Gültigkeit (und die kannst du festlegen). Nach vielleicht 3 Minuten ist die Session halt abgelaufen und der User nicht mehr eingeloggt. User, die sich nicht ausloggen sind also nicht so das große Problem.
Damit erledigt sich dann auch das andere Problem: Wenn keine Cookies genutzt werden, wird die Session-ID halt per URL weitergereicht. Sollte ein User versehentlich einen Link mit Session-ID posten, dann ist diese halt wahrscheinlich auch bereits abgelaufen, wenn jemand anders den Link benutzt...
Aber sonst gibt es da nicht viele Möglichkeiten: Die Session-ID muß halt weitergereicht werden und da bleiben dir nur Cookies, GET oder POST oder eine Kombination aus diesen dreien.
Gruß, rob
Moin!
-Ist dieses Login-Verfahren halbwegs sicher?
Kommt drauf an, was Du machen willst. Für den Login in einem Board sicherlich alleine ausreichend. Einige empfindlichere Dinge wie das Onlinebanking sollte man noch auf andere Techniken zurückgreifen und die Übertragung verschlüsseln (z.B. mit SSL).
Andernfalls wäre es theoretisch möglich, eine Session zu "stehlen". Mit Hilfe von Sniffern könnte man (möglicherweise) die gesamte Kommunikation zwischen Browser und Server mitlesen. Sessions entführen / Spoofing ist prinzipiell gar nicht so schwer.
Wenn es also wirklich auf Sicherheit ankommt, weil hinter dem Login sensible Daten bereitgestellt werden / einzusehen sind, dann verschlüssel die Verbindung. Ansonsten bräuchte man auch nicht mal eine Session stehlen, wenn man nur mitlesen will...
- Kann man eine laufende Session besser schützen und ist das überhaupt nötig?
Sessions sind primär eine Methode, um den User wiederzuerkennen (eine eindeutige Indentifierung ist per HTTP ja nicht so ohne weiteres möglich), aber nicht, um etwas besonders sicher zu machen.
Gruß, rob