PHP: Sicherheitslücke in Login

Experience1986

Erfahrenes Mitglied
Hi,

Ich bin seid gerunger zeit dabei mir eine kleine community mit login usw. zusammen zu coden. So weit so gut, bei mir kann sich der user mit seinen daten einloggen (login.php), falls er registriert ist. In der Login.php wird also abgefragt, ob der beutzerdatum mit dem dazugehörigem passwort in der datenbank ist, ist das der fall, so wird eine session gestartet, mit den variablen, Benutzername, Passwort und der UserID.

Dieser Code ist, soweit ich das beurteilen kann, sicher.

Nun habe ich mir eine Funkton zusammen gebastelt, die anhand von Benutzername und Passwort wieder abfrgägt, ein User registriert ist, diese soll aber abfragen, ob ein registrierter user eingeloggt ist, damit ich bestimmte inhalt nur fr eingeloggte user darstellen kann, wie zum beisppiel die profil änderung.

Zuerst mal noch die function, von der ich geredet habe:
PHP:
function IsLoginCorrect($user,$pass,$FUserID)
 {
   $SQLLoginCheck=mysql_query("SELECT * FROM mitglieder WHERE nickname='$user' && passwort='$pass' && user_id='$FUserID'");
   if (mysql_num_rows($SQLLoginCheck)!=0)
     { return true; }
   else { return false; }
 }

Aufrufen tue ich diese funktion so, nachdem ich eine Session gestartet habe:
IsLoginCorrect($Benutzername,md5($Passwort),$UserID)

Soweit sieht das ja gut aus, aber wenn die session nicht gestartet ist (nicht eingeloggt) und man ruft über die url die profil änderung auf, dann wird nicht angeziegt, gibt man aber in der url die variable userID an, so kann man von irgendeinem user das Profil bearbeiten, was ja nicht sein darf.

Wie kann ich es also anstellen, das meine funktion oder abfrage nur die Variable UserID verwendet, wenn sie registriert (session) ist und nicht wenn sie in der url angegeben ist?

Ich hab bereits auch schon versucht, in meiner funktion mit session_is_registered(UserID) zu arbeiten, doch ich kann das verhalten der seite immer noch anhand der user id in der url beeinflussen.


Ich hoffe, ihr verstht meine frage und bin dankbar für jede antwort ;-)
 
Das kann mir auch nicht sehr weiterhelfen, weil das ja ne server konfiguration ist und die meisten server das nicht so eingestellt haben. Zudem ist es um einiges einfacher, wenn ich einfach mit $variablenname arbeiten kann.
 
hey..ist heute irgendein besonderer Tag der schlagartig allen das Lesen schwermacht, oder warum passiert mir das nun heute schon zum fünften Mal..

Hättest du genau gelesen, wäre dir aufgefallen das du auf die Session-Variablen mit $_SESSION bzw. $HTTP_SESSION_VARS zugreifen solltest...damit gewährleistest du das die Variable wirklich aus der Session kommt, und nicht zufällig von der URL oder von einem HTTP-POST ... und genau das ist was du brauchst...
 
Zurück