Hallo an alle!
Ich habe ein eingenes Login-Script erstellt und wollte mal fragen, ob man das so wie es ist einsetzen könnte oder ob es Sicherheitslücken gibt.
Mein Script besteht aus zwei Dateien, zwischen denen der Nutzer per HTTP-Header umgeleitet wird.
Datei anmeldung.php:
PHP
<?php
//Datenbankverbindung
error_reporting(E_ALL);
define('MYSQL_HOST','localhost');
define('MYSQL_BENUTZER','root');
define('MYSQL_PASSWORT','');
$db_link = mysql_connect(MYSQL_HOST,MYSQL_BENUTZER,MYSQL_PASSWORT);
mysql_select_db("test");
//Session Starten
session_start();
if (!$db_link) {
die('Verbindung fehlgeschlagen');
}
if ((isset($_GET['name']))and(isset($_GET['kennwort']))){ //Wenn Anmeldeformular audgef�llt wurde
//Eingaben escapen
$name = mysql_real_escape_string(htmlentities($_GET['name']));
$kennwort = mysql_real_escape_string(htmlentities($_GET['kennwort']));
if(($name=="")or($name=="Benutzername")or($kennwort=="")or($kennwort=="Kennwort")){
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"get\">";
if (($name=="")or($name=="Benutzername")){
echo "Bitte geben Sie Ihren Benutzernamen ein: ";
}
echo "<input type=\"text\" name=\"name\" value=\"$name\" />";
if(($kennwort=="")or($kennwort=="Kennwort")){
echo "Bitte geben Sie Ihr Kennwort ein: ";
}
echo "<input type=\"password\" name=\"kennwort\" value=\"$kennwort\" />";
echo "Angemeldet bleiben? <input type=\"checkbox\" name=\"bleiben\" />";
echo "<input type=\"submit\" name=\"\" value=\"einloggen\" />";
echo "</form>";
}
else{
$sql = "SELECT `username`,`passwort` FROM `passwoerter` WHERE `username` = '$name' AND `passwort`= '$kennwort'"; //Alles auslesen, wo Name und Kennwort stimme
$ergebnis = mysql_query($sql); //Anfrage versenden
if (mysql_num_rows($ergebnis)==1){ //Wenn genau 1 Datensatz zur�ckkommt
$_SESSION['username'] = $name; //Username in Session speichern
$_SESSION['eingeloggt'] = true; //"Erlogreich eingeloogt" in Session speichern
if (isset($_GET['bleiben'])){ //Wenn angemeldet bleiben angekreuzt wurde
setcookie("login","ja"); //Cookies setzen
setcookie("username",$name);
$_SESSION['cookie'] = true;
}
else {
$_SESSION['cookie'] = false;
}
goto weg; //Zu abgeschlossenen Seite gehen
}
else{ //Sonst
$_SESSION['eingeloggt'] = false; //"Nicht eingeloggt" in Session speichern
echo "Login gescheitert."; //und ausgeben
goto formular; //Formular anzeigen
}
}
}
elseif (isset($_GET['ja'])) { //Wenn Ausgeloggt wird
if($_GET['ja']=="ausloggen"){
$_SESSION['eingeloggt'] = false; //"Nicht eingeloggt" in Session speichern
if (isset($_GET['cookieloeschen'])){
echo "Cookie gelöscht!";
setcookie("login",null,time(-1));
setcookie("username",null,time(-1));
}
echo "Logout erfolgreich!"; //Meldung ausgeben
goto formular; //Formular anzeigen
}
}
elseif (isset($_COOKIE['login'])){ //Wenn Cookie gefunden wurde..
if ($_COOKIE['login']="ja"){ //..und stimmt..
$_SESSION['eingeloggt'] = true; //Sessiondaten abspeichern
$_SESSION['username'] = $_COOKIE['username'];
$_SESSION['cookie'] = true;
goto weg; //Zu Nutzerkreis gehen
}
}
elseif (isset($_SESSION['eingeloggt'])){ //Wenn schon eingelogt wurde
if ($_SESSION['eingeloggt']){
weg:
header("Location: nutzerkreis.php"); //Zu abgeschlossener Seite gehen
}
else goto formular; //Sonst Formular anzeigen
}
else { //Sonst
formular: //Formular anzeigen
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="get">
<input type="text" name="name" value="Benutzername" />
<input type="password" name="kennwort" value="Kennwort" />
Angemeldet bleiben? <input type="checkbox" name="bleiben" />
<input type="submit" name="" value="einloggen" />
</form>
<?php
}
?>
Alles anzeigen
Datei nutzerkreis.php:
PHP
<?php
session_start(); //Sessions starten
if (isset($_SESSION['eingeloggt'])){
if ($_SESSION['eingeloggt']){ //Wenn erfolgreich eingeloggt wurde
//Ausf�hren, was nicht jeder sehen soll
echo "Login erfolgreich!<br />Username: ".$_SESSION['username'];
if ($_SESSION['cookie']){
echo "Anmeldung gespeichert!";
}
echo "<form method=\"get\" action=\"anmeldung.php\"><input type=\"submit\" name=\"ja\" value=\"ausloggen\" />";
if ($_SESSION['cookie'])
echo "Anmeldung löschen? <input type=\"checkbox\" name=\"cookieloeschen\" value=\"\" />";
echo "</form>";
}
else goto weg; //Sonst zur Anmeldung gehen
}
else {
weg:
header("Location: anmeldung.php"); //Zur Anmeldung gehen
}
?>
Alles anzeigen
Danke schon im voraus.
webmaster3000