von Philipp Gérard |
Genau die Seite möchte ich auch empfehlen, vor allem http://tut.php-q.net/login.html. |
von subjective |
uhh das ist noch aus der register_globals-Zeit. - Heutzutage verwendet man kein session_register() mehr sondern greift einfach auf das Array $_SESSION zu. Werte die man dort schreibt werden am Ende des Scripte abgespeichert und vom nächsten session_start() geladen.
Das zweite Problem dieses Scriptes hier ist SQL-Injection. Durch die Angabe bestimmter Passwörter kann ich das SQL-Statement so verändern, das zB das Passwort an dieser Stelle gar nicht geprüft wird.
Das dritte Problem hast du erkannt. Das Passwort liegt im Klartext sowohl in der Datenbank, als auch in der Session. Allerdings befindet sich ja beides auf dem Server - an den Client geht ja nur die Ausgabe des PHP-Scriptes. Man kann Passwörter in einen Hash umwandeln (md5(), sha1(),...). Da das gleiche Passwort immer den gleichen Hash ergibt, verschlüsselt man einfach die Eingabe ebenfalls und vergleicht die beiden verschlüsselten Werte. Damti kann jemand mit Zugriff auf den Server/die Datenbank das Passwort nicht mehr lesen. Das hilft natürlich nich auf deinem Server - aber es schützt eventuelle andere Accounts des gleichen Users (auch vor dir .
Nummer vier ist ein logisches Problem. Das Passwort aus der DB wird zusätzlich noch mal mit dem Masterpasswort im PHP-Script verglichen - damit geht nur ein Passwort für alle User - irgendwie kein guter Schutz. Es macht das SQL ziemlich überflüssig.
Am besten mal in das QNet-PHP-Tutorial (http://tut.php-q.net) gucken
|
von werner_s |
hallo!
Dürfte schon ziemlich langweilig sein, aber ich hab wirklich brav im netz gestöbert und auch die suche-funktion verwendet. rtfm hat auch nix gebracht. bin halt einfach zu doof 
ich will ein einfaches login auf sessions basierend. bitte um verbale zerfleischung, wenn man das so überhaupt nicht machen kann!
Die Daten skz und pw kommen von einem einfachen formular!
Wenn ich das richtig sehe, dann kann ich nach diesem script bei jeder datei, in der ich session_start() versende die skz und das pw auslesen und die datenbank diesbezüglich filtern. Stimmt das so?
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26: | <?
session_start();
session_register(skz);
session_register(pw);
include("incl/db.inc.php");
$abfrage = "SELECT pwbet, pwdir
FROM pwl
WHERE skz = '$skz'";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);
$db_pw = $row->pwbet;
if($row == false) // Wenn kein Suchergebniss erzielt wurde db_pw auf dummywert setzen
$db_pw = "?!§!$%";
if($db_pw <> $pw) {
echo "User oder Passwort falsch!<br>";
echo '<a href="login.php">Zurück zur Anmeldung</a>';
exit;
}
?> |
also auf zum lustigen Zerfleischen
lg und danke
werner |
|