ERLEDIGT
JA
JA
ANTWORTEN
11
11
ZUGRIFFE
435
435
EMPFEHLEN
-
Hey Leutz,
ich habe ein Problem mit meinem Login-system auf einer Fanpage.
Wenn ihr euch mal folgendes anschaut:
http://olsen.dfmusik.de/index.php?section=login
Wenn ihr euch da mit folgenden Daten einloggt:
Nickname: test
Passwort: test
Eigentlich sollten sich folgende Menu-punkte umändern:
Einloggen · Registrieren >> Ausloggen
Hier meine Scripte:
login.php:
menu.phpPHP-Code:<?php
$nickname = $_POST['nickname'];
$passwort = $_POST['passwort'];
$Query = "SELECT ".
"*".
"FROM ".
"user ".
"WHERE ".
"(nickname like '$nickname')
AND ".
"(passwort like '$passwort')";
$Result = mysql_query ($Query);
if (mysql_num_rows ($Result) > 0)
{
// Benutzerdaten in ein Array auslesen.
$data = mysql_fetch_array ($Result);
// Sessionvariablen erstellen und registrieren
$_SESSION["user_id"] = $data["id"];
$_SESSION["nickname"] = $data["nickname"];
$_SESSION["email"] = $data["email"];
header ("Location: ?section=index");
}
else
{
header ("Location: ?section=login&fehler=1");
}
?>
PHP-Code:<a href="?section=index">Home</a>
·
<a href="?section=news">News</a>
·
<a href="?section=bio">Biography</a>
·
<a href="?section=links">Links</a>
·
<a href="?section=active">Active</a>
·
<a href="?section=stuff">Cool Stuff</a>
·
<a href="?section=community">Community</a>
·
<?php
if (!isset ($_SESSION["user_id"]))
{
echo " <a href=\"?section=login\">Einloggen</a> ";
echo " · ";
echo " <a href=\"?section=register\">Registrieren</a> ";
} else {
echo " <a href=\"?section=logout\">Ausloggen</a> ";
}
?>
<hr />
Ich werde jetzt ganz geduldig warten, bis mir jemand hilft
David
-
Das hat jetzt zwar nichts mit deinem Problem direkt zu tun, ist aber dennoch sehr wichtig!
Wenn ich das richtig sehe, wird das Passwort im Klartext in der Datenbank gespeichert?
Falls das der Fall sein sollte, müsstest du das schnell ändern.
Und außerdem solltest du in der Datenbank-Abfrage nicht 'LIKE' sondern '=' benutzen.
greetz
daddzbe inspired...simplify...
-
Die funktion session_start(); ist schon was schönes was jedoch bei dir fehlt, was heisst das die session garnet existiert und er netmal weiss das du loggen bist...
Geändert von venyl (10.07.06 um 23:20 Uhr)
-
10.07.06 23:54 #4
Hallo!
Kommt gut wenn man sich auch ohne Benutzername/Passwort einlogen kann.
Zitat von daddz

Ausserdem fehlt der Schutz vor einer SQL-Injection.
Irgendwie übersichtlicher.PHP-Code:$Query = "SELECT
*
FROM
`user`
WHERE
`nickname` = '".mysql_real_escape_string($nickname)."'
AND
`passwort` = '".mysql_real_escape_string($passwort)."';";

Die Datei heisst wirklich "login.php"?
Dann frage ich mich wie das Formular es schafft die Daten dorthin zu schicken.
Und wo prüfst Du überhaupt ob das Formular abgeschickt wurde?
session_start() wurde ja schon genannt.
Gruss Dr DauSchri-Schra-Schrödi *g*
mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
Dinge, die mit Tabellen besser klappen als mit CSS
Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
Meine Links zum Thema Linux (Last update: 29.10.2011)
Kein Busen ist so flach wie das Niveau dieser Party!
----
Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
----
Ich habe 3 Kinder und kein Geld!
Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)
-
Jetzt, wo ihr's sagt, fällts mir ein :-O
Dasfehlt natürlichPHP-Code:session_start();
Wie konnte ich das vergessen...
Noch eine Frage:
Mein Server wurde gehackt, 6 datenbanken, ca. 100 tabellen wurden gelöscht.
Sollte ich den Anbieter wechseln oder nicht? Das ist jetzt schon das 2. Mal
MfG
David
-
Das kommt darauf an wie der Server gehackt wurde. Wenn das Problem bei Deinen Scripts liegt wird ein Umzug nicht helfen.
PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
-
Das dachte ich mir schon.
Zitat von Dennis Wronka
Spaß bei Seite
Nein, heute morgen wollte ich auf meinen Seiten vorbeischauen, und was war? Alle Seiten wurden von meinem conifxx aus auf porno-seiten umgeleitet, subdomains wurden gelöscht, alle datenbanken waren weg usw. usw
David
-
Alles schön und gut, doch mich intressiert ob das script jetzt mit session_start(); ?
ich rage heraus und gehe in die tiefe.....wenn ich PHP kann :P
-
Da fehlt nen Verb
Zitat von venyl

Jau, jetzt geht es
-
11.07.06 16:35 #10
Deine Passwörter hast Du dann ja bestimmt schon geändert.....
Ich würde mal in die Logfiles vom Webserver und vom System gucken..... evtl. kann man daraus schon etwas erkennen.
Und wie Dennis schon sagt, es kann auch an Deinen Scripten liegen..... wie z.b. mit der schon genannten SQL-Injection.
Hinzu kommt noch Dein LIKE..... und schon konnte ich mich ohne Benutzername/Passwort einlogen.
LIKE dient als Zeichenketten-Vergleichsfunktion.
Vor LIKE kommt der String mit dem verglichen werden soll (in Deinem Fall alle Zeilen aus der Spalte "nickname" bzw. "passwort").
Nach LIKE kommt der String nach dem gesucht werden soll.
Da man das %-Zeichen als Ersatzzeichen für jedes beliebige Zeichen nutzen kann, brauchte ich als Benutzername und Passwort also lediglich das %-Zeichen eingeben.
Und schon wurde in den Spalten "nickname" und "passwort" nach irgend einem beliebigen Zeichen gesucht.
Nun sind in einer Benutzerverwaltung natürlich auch irgend welche Benutzer eingetragen (welch Wunder
), was dann dazu geführt hat dass auch irgend ein beliebiges Zeichen gefunden wurde.
Zwangläufig musste mein Login also auch ohne einem mir bekannten Usernamen/Passwort gelingen.
LIKE könnte bei einer Suchfunktion ganz nützlich sein..... da aber bei einem Login nicht zu erwarten ist dass der User nur einen Teil seines Usernamens und/oder Passworts eingibt, kannst Du getrost auf LIKE verzichten.
Schri-Schra-Schrödi *g*
mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
Dinge, die mit Tabellen besser klappen als mit CSS
Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
Meine Links zum Thema Linux (Last update: 29.10.2011)
Kein Busen ist so flach wie das Niveau dieser Party!
----
Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
----
Ich habe 3 Kinder und kein Geld!
Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)
-
Beim Passwort frag ich mich immer: Warum beim Login ueberhaupt an die Datenbank uebergeben?
Am Anfang gibt der User seinen Usernamen und sein Passwort ein, und wenn alles okay ist soll am Ende die UserID in die Session geschreiben werden.
Um an die UserID zu kommen muss ich doch eh die User-Daten aus der Datenbank holen, dementsprechend kann man es sich doch sparen das Passwort an diese zu uebermitteln.
So ungefaehr sieht mein Login aus:
Nicht ganz so, aber ungefaehr.Code php:1 2 3 4 5 6 7
$users=mysql_query("select * from `users` where `username`='".quote_string($_POST['username'])."'"); $user=mysql_fetch_assoc($users); $passwordhash=sha1($_POST['password']); if ((!empty($user)) && ($passwordhash==$user['password'])) { $_SESSION['id']=$user['id']; }
quote_string() ist uebrigens eine selbst zusammengestrickte Funktion die ungefaehr Beispiel 3 bei mysql_real_escape_string() in der PHP-Doku.
Nicht zu erwarten? User die ueberhaupt ansatzweise auch nur auf die Idee kommen gehoeren oeffentlich gesteinigt.
Zitat von Dr Dau
Wie Dr Dau schon sagt, LIKE hat bei einem Login absolut nichts verloren.PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
-
12.07.06 03:47 #12Stimmt auch wieder..... aus der Sichtweise habe ich es noch garnicht betrachtet.....
Zitat von Dennis Wronka
Denn genauso wenig wie es zu erwarten ist dass ein User sich mit halben Benutzernamen/Passwort einlogen kann, ist es auch nicht zu erwarten dass es einen Benutzernamen mehrfach gibt.
Aber was genau würde es bringen?
Mehr Sicherheit?
Mehr Performance?
Hmm..... *kurz nachdenke*
Nagut, vergiss meine Frage wieder..... mit der Sicherheit kann ich nachvollziehen..... und die sollte Grund genug sein.
Schri-Schra-Schrödi *g*
mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
Dinge, die mit Tabellen besser klappen als mit CSS
Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
Meine Links zum Thema Linux (Last update: 29.10.2011)
Kein Busen ist so flach wie das Niveau dieser Party!
----
Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
----
Ich habe 3 Kinder und kein Geld!
Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)
Ähnliche Themen
-
Frage zu Tutorial "Login-System mit Sessions"
Von Dude23 im Forum PHPAntworten: 2Letzter Beitrag: 02.05.09, 18:56 -
"System.Windows.Forms.TextBox" und "String" nicht def. Hilfe bei Taschenrechener!!
Von Bulldozer1930 im Forum Visual Basic 6.0Antworten: 4Letzter Beitrag: 20.09.08, 17:04 -
Frage zu Tutorial "Login System mit Sessions"
Von UncleB im Forum PHPAntworten: 1Letzter Beitrag: 08.06.08, 17:51 -
Frage zu "Login System mit Sessions"
Von BlackBestia im Forum PHPAntworten: 3Letzter Beitrag: 29.01.07, 18:19 -
Problem mit "Login-System mit Sessions"-Tutorial
Von DaRula im Forum PHPAntworten: 15Letzter Beitrag: 01.07.02, 15:12





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren