CGI C++ Session
-
Warum ist das so wichtig, ob ein Cookie in ner Datei landet oder ob es im Speicher verbleibt? Da es als ganz normaler Header gesendet wird, kann man es sowohl abfangen, als auch emulieren...
Fazit: Kekse sind NICHT sicher!
Gruß Jens
-
Klar kannst alles Abfangen.
Wenn du keine Zeit setzt dann existier das Cookie nur temporär und ist beim schließen des Browsers nicht mehr da. Somit kann es nicht ausgelesen werden.
Wie willst du aber sonst einen User identifizieren?
HTTP ist verbindungsloses Protokoll.
-
Es sagt ja niemand, dass du keine Session-ID (zur Not auch eine User-ID - muss dann aber sicher sein nicht einfach nur 1, 2, 3, ... sondern vielleicht ein md5)! Du solltest aber eben nicht irgendwelche Werte direkt im Cookie speichern, da sie verhältnismäßig einfach manipulierbar sind, sondern nur eine dieser IDs
-
Ich speicher nur die userid um aus der DB dann immer die restlichen Daten bei der nächsten Seite zu bekommen.
Das wollte ich mir aber ersparen da bei jedem aufruf ein Zugriff auf die DB erfolgen muss.
Wie macht das eigentlich PHP mit den Sessionvariablen.
Haben die da einen eigenen Server oder ließt er sie jedesmal aus einer Tempdatei?
-
Ich speicher nur die userid um aus der DB dann immer die restlichen Daten bei der nächsten Seite zu bekommen.
Warum speicherst du dann nicht eine Session-ID
Das wollte ich mir aber ersparen da bei jedem aufruf ein Zugriff auf die DB erfolgen muss.
Wie macht das eigentlich PHP mit den Sessionvariablen.
Haben die da einen eigenen Server oder ließt er sie jedesmal aus einer Tempdatei?Imho werden die jedesmal neu gelesen
-
Session_ID müsste ich erst generieren und den Source will ich mir ersparen oder hast du einen für mich.
-
Für C++ nicht, aber mit PHP kannst du es z.B. folgendermaßen machen:
$sess_id = md5(uniqid(rand()));
-
Original erstellt von Unix-Tom:
Session_ID müsste ich erst generieren und den Source will ich mir ersparen oder hast du einen für mich.
du brauchst eine Session ID - zumindest wenn du nicht willst, dass sich jemand als Admin oder ähnliches ausgibt.
Bei meiner CGI Library mach ich es so:
Ich habe eine Ordner Session (worauf nur mein Script zugriff hat)
in diesem Ordner liegen 2 dateien:
session
session_lockjedes script dass eine Session braucht lockt mal session_lock (solange session_lock gelockt ist, kann kein anderes script mit den sessions rumspielen)
dann liest es alle daten aus session aus -> die form der daten ist folgendermaßen:session_id time_stamp
wobei das script dann alle sessions löscht wo der timestamp älter als X ist.die session_id wird wie folgt verwendet:
es gibt einen unterordner session_dats
hier gibt es für jede session eine datei die genauso wie die session_id heißt - da stehen alle session daten drinnen.session id generiert sich dann so:
md5(timestamp + laufzeit) (uU kommt noch ein xor IP dazu - da bin ich mir noch nicht sicher)
dann wird geschaut ob die session_id schon existiert (es stehen ja alle session ids in der session datei drinnen)
wenn sie schon vorhanden ist, dann wird die id halt nochmal generiert (da sich ja laufzeit verändert hat)als sicherung speicher ich zusätzlich noch die IP vom user in der session - wenn der User zwar die richtige session_id hat, aber die falsche IP dann bekommt er die session trotzdem nicht.
falls du denkst, dass das alles overengineering ist, dann bedenke folgendes:
es gibt genug Leute denen fad ist. Und es gibt nix einfacheres als cookies zu manipulieren - eine session ID zu raten ist sicher lustig.Sollte deine Lösung aber nur fürs (Firmeninterne) Intranet sein - dann reicht das mit dem Cookie natürlich auch - denn diese ganzen Sicherungen macht man quasi nur für Leuten denen fad ist... (die haben dann meistens nichtmal böse absichten - aber wenn sie dann die sensiblen daten haben, dann ist es ja egal ob sie sie mit vorsatz oder nicht bekamen...)
-
Original erstellt von Shade Of Mine:
**
Bei meiner CGI Library mach ich es so...
**Kann man die schon sehen? Ich bin grade auf der Suche nach einer C++-CGI-Lib und habe noch nichts passendes gefunden...
Danke!
Peanut
-
Original erstellt von Peanut:
**Kann man die schon sehen? Ich bin grade auf der Suche nach einer C++-CGI-Lib und habe noch nichts passendes gefunden...
**die ist noch viel zu unstable
und ich habe kaum zeit sie weiterzuentwickelnaber schau dir mal
CGI++
CGICC
CGIXXan - die sind recht gut (aber AFAIK gibts keine Lib die Sessions kann)
-
ich wärm das thema ja ungern auf, aber muss man überhaupt daten beim clienten speichern?
Man kann doch auch gewisse daten des clienten nutzen um einen fingerabdruck zu erstellen und dann anhand dessen die session zu laden
als daten könnte man z.b. ip, browser, ident, etc. nehmen um so einen fingerabdruck zu generieren