kostenloser Webspace werbefrei: lima-city


Loginscript bewerten

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    s***h

    Hi,
    ich hab gestern bzw. heute Nacht ein Loginscript für einen Adminbereich geschrieben und da ich Anfänger (!) in Sachen php bin, wäre es sehr nett, wenn ihr mein Script mal anschauen könntet und mir sagen, ob ich was falsch gemacht habe, ich was verbessern kann oder etwas unsicher ist.

    Hier meine admin.php:
    Was noch zu sagen ist, ist dass die index.php mit "session_start();" beginnt und die admin.php durch das aufrufen von index.php?section=admin in die index.php includet wird.

    <?php
    
    $adminuser = "admin";
    $adminpw = "admin";
    
    if (!isset($_SESSION['loginfalsch']))
    {
    $_SESSION['loginfalsch'] = 0;
    }
    
    if ($_SESSION['loginfalsch'] == 3)
    {
    die("<br>Sie haben die Logindaten zu oft falsch eingegeben!");
    }
    
    if(isset($_SESSION['Adminsession']) AND $_SESSION['Adminsession'] == "wahr")
     
    {
    	if(isset($_GET['action']) AND ("logout" == $_GET['action'])) 
    	{
    	$_SESSION['Adminsession'] = "nichtmehrwahr";
    	echo "<p>\n";
    	echo " Sie haben sich ausgeloggt. Um wieder in den Adminbereich\n";
    	echo " zu kommen müssen sie sich wieder Einloggen\n";
    	echo "</p>\n";
    	} 
    	else
    	{
    
    	echo "<h2>Adminbereich</h2>";
    
    	echo "<br><br>Logout <a href=\"index.php?section=admin&action=logout\">hier</a>";
    	}
    }
    
    elseif (isset($_POST['usereingabe']) AND isset($_POST['pweingabe']))
    {
    	if ($_POST['usereingabe'] == $adminuser AND $_POST['pweingabe'] == $adminpw )
    	{
    	$_SESSION['Adminsession'] = "wahr";
    	echo "<h2>Login richtig</h2><h3>Weiter <a href=\"index.php?section=admin\">hier</a></h3><br>";
    	}
    	else
    	{
    	$_SESSION['loginfalsch']++;
    	$varversuche = 3 - $_SESSION['loginfalsch'];
    	echo "Login falsch<br>";
    	echo "Ihre Logindaten können Sie in der config.php nachlesen<br>";
    	echo "Noch $varversuche Versuche<br>";
    	}
    
    } else {
    
    echo "
    <h2>Login zum Adminbereich</h2>
    <center>
    
    <form action=index.php?section=admin method=post>
    <table>
    <tr><td>Name:</td>
    <td><input type=\"password\" name=\"usereingabe\"></td></tr>
    <tr><td>Passwort:</td>
    <td><input type=\"password\" name=\"pweingabe\"></td></tr>
    <tr><td> </td> <td><input type=submit value=\"Login\"></td> </tr>
    </table>
    </form>
    <br>
    </center>
    ";
    
    }
    
    ?>


    Danke!
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. So im großen und ganzen passt der Code schon, aber was ich bemängeln würde ist, dass du bei richtigem LogIn einfach

    $_SESSION['Adminsession'] = 'wahr';

    definierst. Das hat allerdings den Nachteil, dass der User seine Session manuell auf 'wahr' setzen kann.
    Das Problem ließe sich dadurch lösen, dass du den eingegebenen Usernamen/Passwort mit md5-Verschlüsselung in der Session speicherst und vor jedem Anzeigen des Admin-Bereichs auf Richtigkeit überprüfst.

    Ich hoffe, ich habe dir geholfen :thumb:...
  4. Noch was wichtiges:
    Man kann in das Formular auch Code eingeben, den musst du herausfiltern:
    http://de.php.net/stripslashes

    Und wenn du die Reihenfolge ein bisschen veränderst, kannst du dir die weiterleitung nach dem richtigen Einloggen sparten. Also 36ff vor 16ff schieben

    Und dann gibts noch ne möglichkeit, Sessions zu zerstören:
    session_destroy();




  5. Autor dieses Themas

    s***h

    nigolaz schrieb:
    Noch was wichtiges:
    Man kann in das Formular auch Code eingeben, den musst du herausfiltern:
    http://de.php.net/stripslashes

    Und wenn du die Reihenfolge ein bisschen veränderst, kannst du dir die weiterleitung nach dem richtigen Einloggen sparten. Also 36ff vor 16ff schieben

    Und dann gibts noch ne möglichkeit, Sessions zu zerstören:
    session_destroy();



    Hä?? Ich verstehe jetzt nicht ganz, warum ich da alle Backslashes entfernen soll.



    timo1 schrieb:
    So im großen und ganzen passt der Code schon, aber was ich bemängeln würde ist, dass du bei richtigem LogIn einfach

    $_SESSION['Adminsession'] = 'wahr';

    definierst. Das hat allerdings den Nachteil, dass der User seine Session manuell auf 'wahr' setzen kann.
    Das Problem ließe sich dadurch lösen, dass du den eingegebenen Usernamen/Passwort mit md5-Verschlüsselung in der Session speicherst und vor jedem Anzeigen des Admin-Bereichs auf Richtigkeit überprüfst.

    Ich hoffe, ich habe dir geholfen :thumb:...


    Hm, ne Frage: Wie kann der User die Sessions manuell ändern?

    Beitrag geaendert: 20.2.2007 22:32:18 von sesch
  6. Hmm, ich habe gedacht, der Client kann irgendwie die SessionId manipulieren, sodass die Variablen stimmen...
    Wenn das nicht geht, bitte ich um Aufklärung :blah:.
  7. Autor dieses Themas

    s***h

    Ähm, ja, ich kenn mich da nicht so gut aus ;) Bin php-Anfänger :D
    Deswegen frage ich ja^^
  8. Löl... ich offensichtlich auch :P, nach ausgiebiger Recherche weis ich inzwischen, dass man die Session selbst nicht ändern kann, sondern nur die Id...
    Mit der kann man dann die Daten auslesen, aber ändern?? Kein Plan :biggrin:
  9. g**n

    also ich hab deinen Code zwar nur kurz überflogen, aber was mir aufgefallen ist:

    Du benutzt die Variable "$_SESSION['loginfalsch']" um die fehlgeschlagenen Versuche zu zählen.
    Das ist imo nur bedingt sinnvoll, da man ja z.B. dass Session-Cookie nach drei fehlgeschlagenen Versuchen löschen kann.
    => 3 weitere Versuche, da eine neue Session gestartet wird, bei der die Variable 0 bzw nicht gesetzt ist.

    Ich realisiere sowas normalerweise über eine Datenbank in der der Zeitpunkt eines fehlgeschlagenen Logins Festgehalten wird und die IP desjenigen.
    Alle Einträge älter als 5 Minuten werden gelöscht.
    Bevor geprüft wird ob das Passwort des Benutzers stimmt, wird geprüft ob von der IP des Benutzers nicht schon zu viele Versuche unternommen wurden.
    Da dieses Verfahren auf der IP basiert und das Wechseln einer IP eine gewisse Zeit benötigt halte ich dieses Verfahren für sinnvoller

    Aber je nach Anwendungszweck braucht man so einen Schutz nicht unbedingt (Je nachdem wie sicherheitsbewusst man ist; mir wird immer vorgeworfen, ich wäre paranoid ^^)

    Gruß GotN
  10. Autor dieses Themas

    s***h

    Hey, ich habe meinen Code jetzt verbessert ;)
    Und möchte ihn euch nochmal zum Verbessern geben :)

    http://web384.serverdrome.de/basti/phpscripts/loginbereich.v.1.0.txt


    @gotn: Jop, das ist mir klar, ist aber jetzt net sooo wichtig ;)



    Beitrag geaendert: 7.3.2007 17:22:08 von sesch
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!