SESSION überprüfen?

Unicate

Erfahrenes Mitglied
Hallo, ich habe mir eine Loginklasse geschrieben, da ich sowas andauernd brauche und mir mein UML sagte ich solle das tun ^^

Auf vorhandene Session überprüfen (in meinem Fragefall ist diese vorhanden mit den Einträgen uid und username)

Wenn diese Einträge vorhanden, dann ist der Benutzer automatisch eingeloggt.

Ist das zu gefährlich?
Also kann man Sessioneinträge fälschen?
 
Hi,

benutze mal die Suchfunktion für diesen Forenbereich und du wirst eine sehr guten Link durch den User "Gumbo" zu dem von dir gefragten Thema finden.
 
Hallo!

So intensiv habe ich mich mit Sessions noch nicht befasst.
Ich habe aber schon des öfteren gelesen dass man die Zugangsdaten nicht in der Session speichern soll..... und statt dessen z.b. lieber ein Hashwert genommen werden soll (sicherlich nicht ohne Grund).

Ein grundsätzliches Risiko besteht allerdings wenn man die Session per URL mitsendet, da sie so (z.b. per eMail) weitergegeben werden und durch andere benutzt werden könnte.
Dazu hatten wir gerade erst ein Thema kurz "angekratzt", wo ich meine Gedanken zur Minimierung des Risikos kundgetan habe.

Gruss Dr Dau
 
Ok ich habe mal eine Frage bezüglich Sessions:

Wozu muss ich eigentlich die Session-ID mitsenden?
Bisher hab ich diese nicht verwenden müssen. Wenn ich Daten in einer SESSION speichern wollte hab ich das einfach gemacht ($_SESSION["blabla"] = yyy; )
Da brauch ich doch aber keine ID für, weil es geht ja auch so...

Wozu das ganze also?
 
Habs gerade heraus gefunden danke aber trotzdem.

Ich habe mal in der php.ini session.use_cookie_only auf 0 gesetzt.

Jetzt muss ich also die SESSION ID mitgeben richtig?

Ok habt ihr eine gute Variante gefunden, die relativ sicher ist?
 
Session-Cookies sind ein wenig sicherer als wenn die SessionID im URL uebergeben wird.
Daher hab ich bei mir einen Cookie-Check eingebaut sodass die SessionID nur dann angehaengt wird wenn der User keine Cookies akzeptiert.
 
@Dennis Wronka:
Wie hast du das geprüft?
Ich habe es so gemacht:

PHP:
	/**
	 * @access:							private
	 * @description:						Ueberprueft ob Cookies am Client
	 * 									aktiviert sind oder nicht
	 * 
	 * @return:							bool
	 */
	 function cookiesActivated()
	 {
	 	/*
	 	 * Wenn der Cookie fuer die SESSION-ID gesetzt werden konnte
	 	 */ 
	 	if(setcookie(session_name(), session_id(), time()+3600))
	 	{
	 		return true;
	 	}
	 	return false;
	 }
Das ist glaub ich eine gute Lösung um die id jedenfalls sicher (im sinne von "auf jeden fall") zu übermitteln. (dieses Board macht es genau so...)
Habe aber noch ein Problem bei dem "wie"



OK, jetzt aber nochmal zurück zu meiner Frage vom Anfang.
SESSION-ID ist jetzt mitgeschickt und SESSION-VARS sind auch da.

Wie kann ich jetzt sicher sein,
das das jetzt Herr Bummbelhuber ist und nicht Frau Angreifer?
IP in SESSION speichern? Was ist wenn ein Proxy davor ist?

Ne neue Idee vieleicht? sowas wie ne Zufallszahl oder sowas evtl.
 
Zuletzt bearbeitet:
Unicate hat gesagt.:
Wie kann ich jetzt sicher sein,
das das jetzt Herr Bummbelhuber ist und nicht Frau Angreifer?
IP in SESSION speichern? Was ist wenn ein Proxy davor ist?
Hi. Ich habs heute so gelöst. Der folgende Teil einer Datei ist bei allen zugriffbeschränkten Seiten included (irrelevanten Teile der IF-Abfrage sind rausgenommen).
Quelle der IP-Abfrage: http://www.php.net.
PHP:
	elseif ($_SESSION["loggedon"] == "1"){ // wenn man also bereits erfolgreich eingeloggt ist
//folgend wird der User nach ner IP überprüft. Was er genau abklappert... keine Ahnung!
		if(getenv("HTTP_CLIENT_IP")) {$ip = getenv("HTTP_CLIENT_IP");}
		elseif(getenv("HTTP_X_FORWARDED_FOR")) {$ip = getenv("HTTP_X_FORWARDED_FOR");}
		else {$ip = getenv("REMOTE_ADDR");}

		if ($_SESSION["loginip"] <> $ip){ // wenn die aktuelle und die IP vom Einloggvorgang nicht übereinstimmen passiert folgendes:
			$_SESSION["messageon"] = "1"; //Meldung wird eingeschaltet (Eigenart meiner Anzeige)
			$_SESSION["message"] = "WOW! Probleme mit deiner IP! Vorsichtshalber Ausgeloggt!";
			$_SESSION["kindofmessage"] = "2"; //2 = Warnung (rote Schriftfarbe)
			$_SESSION["loggedon"] = "0"; //Eingeloggt von 1 auf 0 gesetzt und somit ausgeloggt. (wenn auch die session nicht zerstört wurde).
			header ("Location: index.php"); // ab zum Formular, dort wird die Fehlermeldung einmalig ausgegeben.
			exit;
		}
Damit wird verhindert, dass ein Cookie von einem anderen Rechner aus gestartet wird... Keine Ahnung wie oft das vorkommt und ob Cookies dann wirklich noch was ausrichten.
So wird man leider nach einem neuen Verbindungsaufbau (DSL-Standard) automatisch ausgeloggt. Was vielleicht nicht immer wünschenswert ist.

Ich guck noch, ob sich die Abfrage bewährt....

Grüße, DJ
 
Zurück