cookie kodieren

bppg

Mitglied
hallo leute,


ich arbeite zZ an einer userverwaltung-klasse und schreiben eine methode um eich einzuloggen.

nun möchte ich cookies speichern, wenn der user das möchte, nach einem erfolgreichen login. ich will dies aber folgend anstellen:

ich möchte das cookie als string speichern, der aus username und passwort zugleich besteht. jeweils ein zeichen aus dem passwort md5 hash und ein zeichen aus der usernamen nacheinandern.
wenn der username nicht so lang ist wie das pw (was nie der fall ist xD) wird der rest der pw hashes rangehängt.

- es muss sich aber wieder zerlegen lassen in username und pw hash.

nun habe ich das kodieren fertig, mir gefällt diese möglichkeit aber noch nicht ganz, habt ihr bessere vorschläge?

hier der code:
PHP:
private function code_cookie ($nick, $pass) {
		
		$this->username = $nick;
		$this->password = md5($pass); // Passwort in MD5-Hash umwandeln
			
			// Rechnungsvariablen
			$laenge_username = strlen($this->username);
			$laenge_password = strlen($this->password);
			
			$password_part_1 = substr($this->password, 0, $laenge_username); // Passwort auf die Länge des Usernamen zuschneiden
			$password_part_2 = substr($this->password, $laenge_username, $laenge_password); // Rest des Passworts speichern
			
			// Kodieren
			for( $i = 0; $i < $laenge_username; $i++ ) {
				$this->cookie_content .= $this->username[$i].$password_part_1[$i];
			}
			
			// Ergebnis
			$this->cookie_content = $this->cookie_content.$password_part_2;
			
			
			return $this->cookie_content;
			
	}

PS: ich habe mal irgendwo hier im forum glaube ich einen Beitrag gesehen, wo ein user geantwortet hat, mit ähnlichem, aber besserem code! Wenn diesen Beitrag wer kennt bitte posten!
 
Die Authentifizierungsdaten in einem Cookie zu speichern, ist keine gute Idee. Speichere lieber nur einen zufälligen Schlüsselwert, der ähnlich der Sitzungs-ID als Identifikationsmerkmal dient.
 
verstehe ich das richtig:

-ich speichere in dem cookie eine zufallszahl, und dieselbige auch in der db,
-und wenn der benutzer die seite betritt wird in der db nachgefragt ob sein cookie dieselbe zahl hat wie in der DB - wenn ja, ist er eingeloggt

aber wo/wie kann ich dann die authentifizierung machen? denn sonst könnte jeder sich einen cookie mit dieser zufallszahl erstellen und sich als der eigentliche user ausgeben -- wenn der angreifer seine cookies klaut
 
aber wo/wie kann ich dann die authentifizierung machen? denn sonst könnte jeder sich einen cookie mit dieser zufallszahl erstellen und sich als der eigentliche user ausgeben -- wenn der angreifer seine cookies klaut
Diese Gefahr besteht immer. Deswegen ist es auch keine gute Idee die Authentifizierungsdaten selbst in einem Cookie zu speichern.
Der Zufallswert als Identifikationsmerkmal hat den Vorteil, dass er austauschbar ist und an eine zeitlich beschränkte Gültigkeit gebunden werden kann, was bei Cookies selbst nur indirekt möglich kann, da sich diese beim Client befinden und somit außer Reichweite sind.
 
ich verstehe aber eines nicht ganz:

wenn der user nur ein cookie von mir hat wo NUR die ZAHL steht, die ich mit der DB vergleichen kann ... dann hab ich doch noch weniger sicherheit. ich kann nicht mal fragen WER er ist ... ein angreifer kann sich ein cookie mit einer in der DB identischen zahl erstellen und ist eingeloggt...

oder wie wird der cookie mit der zufallszahl ausgewertet?
 
Hey,
also ich hab das so gemacht, das ich username, passwort ( md5 ), und nen zufallscode der in der db gespeichert wird im cookie ist.

Im cookie wirds einfach nacheinander mit einem (oder mehreren beliebeigen) zeichen getrennt. Und beim einloggen müssen alle 3 daten übereinstimmen.

Das doch auch keine schlechte idee oder?
 
aber Gumbo meint, es ist nicht sehr klug md5 hash und username im cookie zu speichern - ist auch so - aber dann weiß ich nicht wie ich mit nur EINEM WERT den user indentifizieren soll.

da müsste doch wenigstens der md5 hash dabei sein oder sowas...
 
wenn der user nur ein cookie von mir hat wo NUR die ZAHL steht, die ich mit der DB vergleichen kann ... dann hab ich doch noch weniger sicherheit. ich kann nicht mal fragen WER er ist ... ein angreifer kann sich ein cookie mit einer in der DB identischen zahl erstellen und ist eingeloggt...
Der Zufallswert wäre natürlich benutzerbezogen. Und der Sicherheitszuwachs ist ja gerade auf den Wegfall der eigentlichen Authentifizierungsdaten begründet.
Sitzungsbasierte Authentifizierungssysteme laufen nicht anders. Alles was nach der Authentifizierung durch Benutzername und Kennwort zur Identifizierung dient ist die Sitzungs-ID. Alles weitere muss und sollte eigens implementiert werden.

Das doch auch keine schlechte idee oder?
Da Benutzername und Kennwort konstante Werte sind, können diese auch weggelassen werden, weil es auch keine zusätzlichen zur Identifizierung benötigten Informationen enthält.
Das Gegenteil ist sogar der Fall: die (wenn auch kodierten) Authentifizierungsdaten werden bei jeder Anfrage übermittelt, was wie bereits erwähnt ein Risiko ist.
 
verstehe, was würdest du dazu sagen:

ich lege in der tabelle users noch ein feld "key" (oder ähnlich) an und speichere dort die zufallszahl, ebendiese auch im cookie - bei JEDEM request wird die zahl neu generiert und upgedated ...

wäre das eine gute idee?
 
[...]
Da Benutzername und Kennwort konstante Werte sind, können diese auch weggelassen werden, weil es auch keine zusätzlichen zur Identifizierung benötigten Informationen enthält.
[...]

Aber zum login brauch ich mindestens einen der beiden werte, da falls sonst (ja sehr unwarscheinlich, aber nicht völlig auzuschließen [ausser man prüfts beim eintragen]) der zufallscode bei 2 usern vorkommt, weiss man ja nicht um welchen der Benutzer es sich handelt.
 
Zurück