Login Script problemm!

powerplayer

Erfahrenes Mitglied
Hi,

Ich habe mir ein Login Script gecodet. Das alles läuft über PHP ausser die Daten die in eine MySql datenbank eingetragen sind. So nun ist mein Problemm wenn ich mich einloggen will und nur ein User in der datenbank steht geht es. Wenn ich ein 2ten hinzufüge und mich mit dem einloggen will geht es nicht. Kann mich aber trotzdem noch mit dem 1sten User einloggen.

Weiss einer von euch warum?

Gruß

(Verzeiht mein Deutsch und meine Fragen stellung)
 
Wenn Du mir sagst, welche Farbe mein Becher neben mir hat, verrate ich dir, wo dein Fehler liegt.

Mal im Ernst: Du musst schon die relevanten Teile deines Codes posten, damit dir jemand helfen kann.

Sven
 
Das ist mein Code von der datei die Prüft ob die Daten stimmen.

PHP:
<?php
include('config.php');

$sql = "SELECT * FROM login";
if (!$res_id = mysql_query($sql))
	die('Fehler! Daten konnten nicht ausgelesen werden.');
	while ($auslesen = mysql_fetch_array($res_id))
	{
	$user = $auslesen['user'];
	$pass = $auslesen['pass'];
	}
	if($username==$user && $password==$pass)
	{
	echo "Login erfolgreich";
	}
	else
	{
	die('Fehler! Benutzername oder Passwort stimmt nicht.');
	}
?>

Tut mir leid denke ich nächstes mal dran.
 
Versuch mal folgendes:
PHP:
<?php
  include('config.php');

  $sql = "SELECT count(*) as ANZAHL
          FROM login
          where user = '".mysql_escape_string($username)."'
            and pass = '".mysql_escape_string($password)."'";

  if (!$res_id = mysql_query($sql)) die('Fehler! Daten konnten nicht ausgelesen werden.');

  $auslesen = mysql_fetch_array($res_id);
  if ($auslesen['ANZAHL'] == 1) {
    echo "Login erfolgreich";
  } else {
    die('Fehler! Benutzername oder Passwort stimmt nicht.');
  }
?>
 
powerplayer nimms als Schutz statt demut!

Hast du dir Schon mal überlegt was passieren kann wenn einer perl URL ständig
http://www.deinedomain.de?userpass=... eingibt?

Mein Tipp:

PHP:
session_start();
dein script

Und wenn einer richtigen Code sagstdu Besipielweise
$_SESSION[user_name] = ...!

oder session_register(VARIABLE);
 
Zuletzt bearbeitet von einem Moderator:
Hast du dir Schon mal überlegt was passieren kann wenn einer perl URL ständig
http://www.deinedomain.de?userpass=... eingibt?

Dann passiert das Selbe, wenn ein kompromittierter Server ständig ein Bild von Deinem Server zieht. Da kannst du mit deiner tollen Session-Variable auch nichts dagegen tun.

Ausserdem wäre es hilfreich, wenn du dich etwas klarer ausdrücken könntest, denn mit
Und wenn einer richtigen Code sagstdu Besipielweise
$_SESSION[user_name] = ...!

oder session_register(VARIABLE);
kann kein Mensch etwas anfangen.

Sven
 
Na wenn du meinst.
- dann ist ja gut. Ich weis aber leider nicht was das mit Bildern zu tun hat?

Ist aber auch an dieser Stelle egal. Man versucht eben zu helfen. Und

PS. Wird eine Sessionvariable über die URL POST oder sonstwie übergeben, wird Sie ignoiert, dies ist der Vorteil. Ich will ja keine Aufruhe bringen, aber diese Fehler habe ich zu Anfangs auch gemacht. Deswegen habe ich gewarnt.

Der älteste Trick. Ein Hacker kennt einen Usernamen. Nun Schickt er ständig codes ab:
?user=admin&pw=00001
?user=admin&pw=00002

usw und sofort. Wie man sich davor schützen kann ist einfach.
1. Den Prot über den der User kommt prüfen (80)
2. Session immer als Gast vorerst starten!
3. In der Session die loginversuche speichern.
4. Cookies darüber anlegen in Datenbanken abspeichern.
5. Falls passwort 3* Falsch getippt für 5 Minuten Nicknamen für login sperren usw. und sofort

Es gibt viele Methoden, die wir zum Schutz anwenden können. Aber das was wir eben gesehen haben, ist sicherheitstechnisch mangelhaft. Deswegen wollte ich mich zu Wort melden.

Aber von mir aus weiter so!


Grüsse!

thaccess wäre sinnvoller dann über copy zum Temproot! und und und ....
Besser sicherer als schlicht!


PPS.

Es ist nicht wirklich böse gemeint aber schau dir doch das Ding an:

PHP:
<?php 
  include('config.php'); 

  $sql = "SELECT count(*) as ANZAHL 
          FROM login 
          where user = '".mysql_escape_string($username)."' 
            and pass = '".mysql_escape_string($password)."'"; 

  if (!$res_id = mysql_query($sql)) die('Fehler! Daten konnten nicht ausgelesen werden.'); 

  $auslesen = mysql_fetch_array($res_id); 
  if ($auslesen['ANZAHL'] == 1) { 
    echo "Login erfolgreich"; 
  } else { 
    die('Fehler! Benutzername oder Passwort stimmt nicht.'); 
  } 
?>

Ist zwar lieb gemeint, aber das ist nicht sehr Sicher. Ausserdem muss das Passwort ständig übergeben werden (Mit dieser Methode) oder etwa nicht. Was spricht da gegen einer Session?
 
Zuletzt bearbeitet von einem Moderator:
Was du hier aufzählst, ging nie und nimmer aus deinem vorherigen Beitrag hervor!

Was das mit Bildern zu tun hat: Ich dachte du spielst auf bewusst verursachten Traffic an.

Meinst Du, dass ein "Hacker" bei seinen Versuchen ständig die Session-ID mitschickt, anhand derer man seine Gesamtversuche ermitteln kann? Wenn die Session-ID für einen Loginversuch notwendig sein sollte, schickt er sie für diesen mit - danach tut er so, als sei er ein neuer Nutzer. Du kannst in der Datenbank nur speichern, was der Client dir übermittelt und was durch das verwendete Protokoll ohnehin bekannt ist. Gibt der Client dir die Informationen nicht, sieht es schlecht aus. Was du heraus bekommst, ist die IP. Doch diese ändert sich beispiels- und bekannterweise bei AOL-Nutzern ständig.

Wenn du deine Portale so schützt, dass nach dreimaliger Falscheingabe des Kennworts der Nutzer für 5 Minuten gesperrt wird, dann tuen mir die Nutzer leid. Dann braucht dein "Hacker" nämlich nur 3 Versuche, um den Nutzer temporär auszusperren. Eine Zeitverzögerung im Sekundenbereich nach Falscheingabe wäre wohl besser, um Brute-Force vorzubeugen.

Des Weiteren war die Frage von powerplayer nicht "Wie realisiere ich ein bombensicheres Loginscript", sondern "Das Login klappt beim zweiten Nutzer nicht" ...

Sven
 
Zurück