Problem mit Login-Skript

Hallo userjules,

ich habe mir das Tutorial mal angesehen und habe einen gravierenden Fehler entdeckt, der das Funktionieren des Scripts zwar nicht beeinträchtigt, aber später, wenn das Programm mal auf die Welt losgelassen wird, große Probleme verursachen kann. Darum solltest du dir angewöhnen JEDES Script, das Eingaben vom Benutzer verarbeitet, entsprechend zu erweitern. Es geht darum, daß die übergebenen Daten völlig ungeprüft verarbeitet werden. Das kann den Zugriff eines Hackers auf die Datenbank ganz einfach machen.
Darum sollten alle Daten z.B. so gefiltert werden, daß nur noch die Zeichen durchgelassen werden, die auch wirklich erwartet werden.

PHP:
$name = preg_replace( "/[^a-z0-9äöüßÄÖÜ \-]/im", "", $_POST['name'] );
$pwd = preg_replace( "/[^a-z0-9]/im", "", $_POST['pwd'] );

Hiier werden z.B. beim Namen alle Zeichen entfernt, die keine Zahlen, Buchstaben, Leerzeichen oder Bindestrich sind und beim Passwort werden nur Buchstaben und Zahlen ohne Umlaute durchgelassen. In deinem Fall setzt du die beiden Zeilen direkt hinter SESSION_START(); . Außerdem mußt du die beiden $_REQUEST[...] durch $name bzw. $pwd ersetzen. Schon ist dein Script erheblich sicherer. Außerdem solltest du keine $_REQUEST verwenden, da damit sowohl POST als auch GET empfangen werden. Es ist aber sicherer, vor allem bei POST, wenn sichergestellt ist, daß die Daten auch per POST und nicht per GET übergeben wurden.
 
Wieder Problem mit Login-Skript

Hallo zusammen,

ich hab mit Hilfe von Karl Försters Tutorial ein Login-Skript gebaut und mit eurer Hilfe fertiggestellt. Auf dem temporären Server hat es wunderbar funktioniert. Auf dem Server des eigentlichen Hosts funktioniert es aber nicht mehr.
Die Session wird über die index.php gestartet, welche über ein Formular dann meine login.php aufruft.

Die login.php sieht folgendermaßen aus:
PHP:
<?php
// Datenbankverbindung aufbauen
$connectionid = mysql_connect ("rdbms.strato.de", "U675065", "fXgt6vH47");
if (!mysql_select_db ("DB675065", $connectionid))
{
die ("Keine Verbindung zur Datenbank");
}

$sql = "SELECT ".
"Id, Nickname, Nachname, Vorname, Ziel ".
"FROM ".
"benutzerdaten ".
"WHERE ".
"(Nickname like '".$_REQUEST["name"]."') AND ".
"(Kennwort = '".md5 ($_REQUEST["pwd"])."')";
$result = mysql_query ($sql);

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["user_nickname"] = $data["Nickname"];
$_SESSION["user_nachname"] = $data["Nachname"];
$_SESSION["user_vorname"] = $data["Vorname"];

$data2 = mysql_fetch_array(mysql_query("SELECT * FROM `benutzerdaten` WHERE `Id` = ' ".$_SESSION["user_id"]." ' "));


if (!isset($data2) || !isset($data2['Ziel']) )
{
   echo "Irgendwas ist schief gelaufen, ich weiß nicht wohin ich soll...";
}
else
{
   header( "Location: " . $data2['Ziel'] );
}  
}
else
{
header ("Location: index.php?fehler=1");
} 

?>

Fehlermeldung dazu:

Warning: Cannot modify header information - headers already sent by (output started at /mnt/web2/40/49/52047949/htdocs/boersenreport/login.php:3) in /mnt/web2/40/49/52047949/htdocs/boersenreport/login.php on line 41

Hat jemand ne Ahnung ?

Danke euch im Voraus !

OK, ich Idiot !
Hab ich doch glatt meine Zugangsdaten für die Datenbank gepostet.
Vergestt es ! Ist schon geändert !

...aber eure Hilfe brauch ich trotzdem !
 
Hi,
Die Fehlermeldung sagt doch schon alles: du hast irgendwo ein echo etc. vor der Zeile 41... Guck einfach mal durch ob irgendwo ganz am anfang des Scripts (oder der eingebunden Skripte) ein Leerzeichen/Leerzeile ist... (passiert mir manchmal^^)

ansonsten seh ich keine Fehler auf anhieb...
 
Cool iAZ,

das war schonmal erfolgreich. Ich seh jetzt die entsprechende Zielseite, allerdings mit einem ähnlichen Fehler:...

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/web2/40/49/52047949/htdocs/boersenreport/users/adminpers.php:6) in /mnt/web2/40/49/52047949/htdocs/boersenreport/users/checkuser.php on line 11

Ist bestimmt ein ähnliches Problem !?
 

Neue Beiträge

Zurück