Login

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Login

    Hallo,

    hab mir einen Login programmiert, den Benutzernamen und das Passwort gibt man in einem Formular ein! Kann ich das Passwort schon Client-seitig verschlüsseln? Wenn es zum Server unverschlüsselt übertragen wird kann ich es ja auch direkt unverschlüsselt in die Datenbank legen, oder?

    Poste jetzt mal die drei Dateien !!!

    Noch ne Frage, kann ich den Login auch in eine Datei packen ???

    user_check.php
    PHP-Code:
    <?
    /* Hier wird die Session gestartet */
    session_start();

    /* Hier werden die Variablen eingebunden */
    include ('../include/db.inc.php');

    /* Hier wird überprüft ob ein benutzername und Passwort eingegeben wurde */
    if ((!isset($user_name))OR(!isset($user_pwd)))
        die ("Ohne Benutzername, oder Passwort geht hier nichts");

    /* Hier wird das eingebene String mittels md5() verschlüsselt */
    $user_pwd = md5($user_pwd);

    /* Hier wird versucht eine Verbindnung zur Datenbank herzustellen */
    $db_connect = @MYSQL_CONNECT($db_server,$db_user,$db_pwd);

    /* Hier wird überprüft ob die Verbindung auch hergestellt wurde */
    if (!$db_connect)
        die ("Es konnte keine Verbindung zur Datenbank hergestellt werden !!!");

    /* Hier wird die Datenbank ausgewählt */
    MYSQL_SELECT_DB($db_name,$db_connect);

    /* Datenbankabfrage */
    $query  = "SELECT pwd,level FROM members WHERE user = '".$user_name."'";
    $result = MYSQL_QUERY($query,$db_connect);

    /* Ein Array erzeugen, in dem die Daten aus der Datenbank stehen */
    $zeileholen = MYSQL_FETCH_ARRAY($result,MYSQL_ASSOC);

    if (!$zeileholen)
        die ("Diesen Benutzernamen gibt es leider nicht");

    /* Hier wird überprüft ob das PWD aus der Datenbank gleich dem eingegebenen ist */
    if ($zeileholen["pwd"]<>$user_pwd)
        die ("Sie haben leider, das falsche Passwort eingegeben");

    /* User-Level aus DB kommt in Variable */
    $user_level = $zeileholen["level"];

    /* Schliessen der Datenbankverbindung */
    $db_close = @MYSQL_CLOSE($db_connect);
    if(!$db_close)
        echo "Konnte Verbindung zur Datenbank nicht schliessen";

    /* Variblen werden in der Session registriert */
    session_register('user_name');
    session_register('user_level');

    /* user_sides.php wird aufgerufen */
    header("Location: user_sides.php");
    ?>
    user_sides.php
    PHP-Code:
    <?php
    session_start
    ();
    ?>

    <HTML>
    <BODY>

    <?
    /* Hier werden die Variablen eingebunden */
    include ('../include/db.inc.php');

    if ((!session_is_registered('user_name'))OR(!session_is_registered('user_level')))
        die ("Haben Sie sich nicht eingeloggt ???");

    /* Hier wird versucht eine Verbindnung zur Datenbank herzustellen */
    $db_connect = @MYSQL_CONNECT($db_server,$db_user,$db_pwd);
    if (!$db_connect)
        die ("Es konnte keine Verbindung zur Datenbank- hergestellt werden !!!");

    /* Hier wird die Datenbank ausgewählt */
    MYSQL_SELECT_DB($db_name,$db_connect);

    /* Datenbankabfrage */
    $query  = "INSERT INTO login (id,user,time,ip) VALUES ('','$user_name',NOW(NULL),'$REMOTE_ADDR')";
    $result = MYSQL_QUERY($query,$db_connect);

    /* Schliessen der Datenbankverbindung */
    $db_close = @MYSQL_CLOSE($db_connect);
    if(!$db_close)
        echo "Konnte Verbindung zur Datenbank nicht schliessen";

    switch ($user_level)
        {
        case 1:
            echo "Hallo Admin ".$user_name."!";
            break;

        case 2:
            echo "Hi User ".$user_name."!";
            break;
        }
    ?>
    <input type="button" name="logout" value="logout" onclick="location.href='user_logout.php'">
    </BODY>
    </HTML>
    user_logout.php
    PHP-Code:
    <?php
    session_start
    ();
    session_destroy();

    header("Location: ../html/user_check.htm");
    ?>

  • #2
    entweder du schreibst dir deine eigene Funktion, oder du benutzt diese hier:
    http://selfhtml.teamone.de/navigatio...wortschutz.htm
    musst du dann nur serverseitig in PHP nachbauen, um die Passwörter
    mit der gleichen Verschlüsselung in die DB zu schreiben.
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      Wenn es zum Server unverschlüsselt übertragen wird kann ich es ja auch direkt unverschlüsselt in die Datenbank legen, oder?
      Lieber nicht, es gibt ja auch andere Wege, an die Daten ranzukommen, als über das Web-Interface.

      Kommentar


      • #4
        Re: Login

        Original geschrieben von Oraj
        Kann ich das Passwort schon Client-seitig verschlüsseln?
        Sicher kannst Du das, aber das ist absolut sinnlos.

        Ob Du jetzt einen Datenstrom mit UID=hand@PWD=gummi über die Leitung schickst, oder dasselbe verschlüsselt wie
        UID=5xslds9ndgh678@PWD=3ljkzm907nxa ist wurscht.

        Alternative: Login über Secure Socket Layer (HTTPS), also eine verschlüsselte Verbindung.

        Passwort ist unbedingt serverside verschlüsselt abzulegen, ganz egal ob im Filesystem oder in einer Datenbank. Dasselbe gilt ansich auch für Antworten eventueller Sicherheitsabfragen, die dazu gedacht sind im Falle eines vergessenen PWDs trotzdem zu den Daten zu gelangen.

        Verschlüsselt abgelegte Daten sind leider nicht unknackbar. Wenn die Daten jedoch mindestens sieben Stellen lang sind, Groß- Kleinschreibung und Sonderzeichen beinhalten ist der Aufwand für BruteForce-Methoden mitunter schon etwas erheblicher. Wenn zu alle dem noch ein PWD-Wechsel alle zwei Monate gefordert wird, dann ist man relativ gesichert.

        Durch Schwachstellen in Web- oder DB-Serverkonfigurationen oder -Bugs können diese mitunter unauthorisiert in Zugriff genommen werden: http://www.gocsi.com/press/20020407.html

        Kommentar


        • #5
          Alternativ kannst Du auch den MD5-Hashcode des Passwortes in die Datenbank speichern. Musst dann halt den MD5 vom eingegebenen Passwort erzeugen (md5()) und den dann mit dem in der Datenbank stehenden MD5-Code vergleichen.

          Die einzige Sicherheitlücke ist, dass das eingegebene Passwort unverschlüsselt übertragen wird.

          Kommentar

          Lädt...
          X