Archiv verlassen und diese Seite im Standarddesign anzeigen : Sicherheit mit PHP Session ID
Hallo zusammen!
Ich habe ein php-skript das sich zwei variablen in der php-session speichert und zwar user und passwort. nun wird ja die session temporär auf dem server in ein verzeichnis abgelegt. Währenddem jetzt der User mit dem skript arbeitet hat er ja eine Session-Id (mit dem inhalt: user & pw) die in dem tempverzeichnis des servers (standard im php.ini) gespeichert wird. Jetzt kann ich diese aufmachen mit dem editor und so den inhalt der session-id anschauen, also den inhalt der beiden variablen im klartext ansehen.
Nun ja das gefällt mir eigentlich überhaupt nicht, da es doch ein riesen sicherheitsloch ist. Man könnte Schnell in versuchung kommen alle momentan vorhanden php-id's anschauen gehen und sich die pw's notieren.
Hat jemand eine ahnung, was es da für möglichkeiten gibt das ganze sichere zu gestalten?
Besten Dank &mfg
larix
schreiben noch einmal die SESSID als VAR in die session.
UN und PW auf jeden fall wieder RAUS nehmen!!! die solltest du nicht in der session speichern.
verwende lieber eine VAR, die z.b. ALLESOK heisst. ist sie '1' (true), ist der user ordnungsgemäß eingeloggt, ist sie '0' (false) ist der user nicht korrekt oder gar nicht eingeloggt.
$allesok = true
oder
$allesok = false
du brauchst dann nur zu schauen, wie der status von $allesok ist. das wars.
du kannst in der php.ini den pfad ändern, wo die sachen abgespeichert sind.
und da nimmst du dann einfach nen verzeichnis, wo nur der apache leserechte drauf hat...
Coragon Rivito 05-12-2002, 17:41 ähem .. und passwörter verschlüsseln wär sinnvoll
@slarti
ob er die dateien in /tmp (standard) liegen hat, oder im apache verzeichnis ist doch egal.
wenn ich das richtig verstanden habe, hat er ja eg zugriff auf die maschine.
wie sollte er denn sonst die daten bisher gelesen haben. in /tmpkommt man ja nicht via browser dran.....
Aus diesem Grunde speichert man ersten nicht Benutzername und Kennwort sondern eine Benutzer ID ... (welch blöde Idee) und hat außerdem im Script die Möglichkeit den Save Path via string session_save_path ( [string path]) (http://www.php.net/manual/en/function.session-save-path.php) individuell zu ändern ... allerdings sollte der Webserver Schreibrechte auf das Verzeichnis haben !
danke für die antworten.
@Abraxax:
was soll mir das bringen wenn ich eine VARIABLE in die session speichere, die mir sagt ob ALLESOKEY ist? ich brauch die Userdaten, da diese für die DB verbindung gebraucht werden.
@rest:
habe schon die server_path variable geänderte auf ein "sicheres" verzeichnis
@all:
gibt es keine php funktion die mir eine zeichenkette mit einem von mir gegebenen verschlüsselungskey verschlüsselt ? also im klartext:
"abc" mit "verschlüsselungskey" -> "34k334kca34"
besten dank!
larix
was soll mir das bringen wenn ich eine VARIABLE in die session speichere, die mir sagt ob ALLESOKEY ist? ich brauch die Userdaten, da diese für die DB verbindung gebraucht werden.
aber du brauchst doch bestimmt nicht das passwort des jeweiligen users, um auf die DB zugreifen zu können, oder?
dann übergibst du also nur den usernamen, um die zuordnung der datensätze in der db hinzukriegen, und die variable alles_ok, die dir sagt, dass der user korrekt eingeloogt ist und auf die daten zugreifen darf.
das problem ist, das skript baut eine verbindung auf zu db mit den userdaten des users! sobald du eine neue seite öffnest, geht die verbindung flöten und das ist der grund warum ich die userdaten brauche!
ich mache auch schon eine persistente db verbindung, aber diese braucht ebenfalls das pw vom user um zu überprüfen ob die verbindung schon hergestellt wurde!
wahsaga hat genau das gesagt, was ich meinte ... :D
wenn du das so machst, solltest du keine probleme haben.
im übrigen mache ich das ähnlich.
das problem ist, das skript baut eine verbindung auf zu db mit den userdaten des users!
du benutzt das spezielle user-passwort auch als passwort für die datenbank?
das ding auf dem db läuft ist ein mittleres system. auf diesem sind schon alle user vorhanden. nun wollte man das rad nicht neu erfinden und so muss sich jeder user mit seiner eigener kennung anmelden, anderes wird die verbindung gar nicht aufgebaut. Ich wollte es anderes aber das stand nicht in meiner macht. dafür darf ich es jetzt ausbaden. im normalfall macht mir das ganze spass, aber dieses skript ist für mich mehr eine qual, da ich ansehen muss wie es anders viel einfacher & schneller gehen würden!
habs jetzt mit base64_encode & base64_decode funktion und verschiedenen arten von zeichenkettenmisshandlungen "verschlüsselt".
danke für die antworten
larix
p.s. das mit der allesokey variable hab ich immer noch nicht geschnallt!
|