|
PHP Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
$namel = False;
$passl = False;
$abfrage = "SELECT username, passwort FROM users";
$result = mysql_query($abfrage);
while($row = mysql_fetsch_object($result)) {
if ($row->username == $tempn) {
$namel = True;
}
if ($row->passwort == $tempp) {
$passl = True;
}
if ($namel == True AND $passl == True) {
$LoggedIn = True;
$tempn = $_SESSION['user'];
echo "<div class='good'>Hallo ".$_SESSION['user']."! Du wurdest ervollgreich eingeloggt</div>";
}
else {
echo "<div class='bad'>Du hast ein falsches Passwort oder einen Falschen Usernamen eingegeben</div>";
}
}
|
Korrigiert mich, wenn ich falsch liege, aber aktuell werden Nutzername und Passwort unabhängig geprüft.
Es könnte also passieren, dass zwar der Nutzername korrekt aber das Passwort falsch ist. Da $namel und
$passl pro Durchlauf nicht neu initialisiert werden, ist $namel bei allen weiteren Durchläufen noch immer auf true gesetzt.
Hat nun ein anderer Benutzer ein passendes Passwort, ist der Login-Versuch erfolgreich, obwohl Nutzername und
Passwort nicht vom selben Benutzer stammen.
Die Variablen $namel und $passl müssten also pro Durchlauf neu und nicht vor der Schleife initialisiert werden,
oder die Nutzer-/ Passwort-Überprüfung in einer Abfrage bzw. direkt durch den SQL-Server geschehen.
Desweiteren wird in diesem Fall für jeden weiteren Benutzer in der Datenbank der else-Bereich durchlaufen und die
Meldung für den fehlerhaften Login ausgegeben.