Ankündigung

Einklappen
Keine Ankündigung bisher.

Login MySQL / PHP SICHER????

Einklappen

Neue Werbung 2019

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

  • Login MySQL / PHP SICHER????

    hallo zusammen,

    ich habe jetzt einen Login geschrieben und frage mich jetzt ob er auch sicher genug ist...
    Vielleicht Schaut ihr es euch mal an.

    Danke im Voraus und mit freundlichem Gruß

    PHP-Code:
    <?php
    session_start
    ();
    ?>

    <?php

    $verbindung 
    mysql_connect("localhost""BENUZER" "PASSWORT")
    or die(
    "Verbindung zur Datenbank konnte nicht hergestellt werden");

    mysql_select_db("DATENBANK") or die ("Datenbank konnte nicht ausgewählt werden");

    $username $_POST["username"];
    $password $_POST["password"];

    $abfrage "SELECT NICKNAMENSPALTE, KENNWORTSPALTE FROM TABELLE WHERE Nickname = '".$username."'";
    $ergebnis mysql_query($abfrage)
    or die(
    "Error: $abfrage <br>".mysql_error);


    while (
    $row mysql_fetch_object($ergebnis))

    if(
    $row->Kennwort == $password)
        {
        
    $_SESSION["username"] = $username;
        echo 
    "Login erfolgreich. <br> <a href=\"geschuetzerbereich.html\">Geschützer Bereich</a>";
        }
    else
        {
        echo 
    "Benutzername und/oder Passwort waren falsch. <a href=\"loginformular.html\">Login</a>".$row->Kennwort."test";

        }

    ?>

  • #2
    Nein ganz und gar nicht.

    1. SQL Injection ist möglich.
    2. Anscheinend speicherst du deine Passwörter im Klartext. Das solltest du vermeiden. Speichere sie als "salted Hash".

    Du solltest auserdem den Login auf maximal einen User beschränken. Da du im Query mehrere User ausliest und dann auch noch in einer Schleife überprüfst ob das Passwort stimmt kann es da schnell zu Problemen kommen.

    Ansonsten lies dir mal folgendes durch:
    Hinweis:
    [!] Bitte lies dir diesen Thread zu den Grundlagen von PHP durch. Die Grundlagen sind essentiell für das Arbeiten mit PHP, MySQL, HTML, JavaScript oder CSS!

    Kommentar


    • #3
      Danke schonmal für die schnelle Antwort...

      was genau kann bzw. muss ich ändern?

      Kommentar


      • #4
        Wie gesagt, speichere deine Passwörter nicht im Klartext.
        Ich kann md5(); empfehlen.

        Folglich würde deine Variable nun so aussehen:
        $password = md5($_POST["password"]);

        Und am besten liest du dir den Artikel mal durch:
        SQL-Injection – Wikipedia

        Kommentar


        • #5
          @ToxicToast: Wieso kannst du md5 empfehlen? Man sollte md5 nicht einfach nur so verwenden. Es sollte immer noch ein Salt verwendet werden.

          Zu den Punkten solltest du selbst mal googlen um was es geht und wie man es beheben kann. Und du solltest prüfen ob $_POST['username'] und $_POST['password'] überhaupt gesetzt sind.

          Kommentar


          • #6
            Zitat von Flor1an Beitrag anzeigen
            Und du solltest prüfen ob $_POST['username'] und $_POST['password'] überhaupt gesetzt sind.
            sry, aber das verstehe ich nicht so ganz...


            und mit md5 bin ich mir auch noch nicht so sicher ob das die ideale lösung ist

            Kommentar


            • #7
              Man sollte immer Abfragen ob eine Variable gesetzt ist. Was ist wenn jemand das Formular abschickt, aber nur das Inputfeld für den Usernamen im Formular mitgeschickt wird? Dann kommt ein Fehler weil $_POST['password'] nicht existiert. Diesen solltest du aber abfangen.

              md5 solltest du mit Salt verwenden, dann spricht imho nichts dagegen!

              Kommentar


              • #8
                Von "einfach nur so" verwenden war ja auch nicht dir rede.
                Aber stimmt, du hast Recht, gibt mitlerweile genügend Programme die Hash's entschlüsseln können...

                Allerdings:
                Die Sicherheit hängt hier mal wieder ganz vom Entwicker ab.
                Wie lang ist der private Schlüssel?
                Wieviele Sonderzeichen und kryptische Reihenfolgen hat der private Schlüssel
                Wie sicher ist der Server konfiguriert
                usw usw...

                Kommentar


                • #9
                  Naja gut es geht jetzt ums PHP Skript, da brauchen wir nicht noch über die Sicherheit des Servers reden

                  Und "Programme die Hash's entschlüsseln können" würde ich gerne noch richtig stellen. Ein Hash kann nicht entschlüsselt werden, er wird schließlich auch nicht verschlüsselt. Er kann nur in Tabellen nachgeschlagen werden ob er zufällig in dieser Tabelle drinnen steht und dazu dann der Klartext.

                  Klar hängt die Sicherheit dann vom Salt ab, aber es sollte leicht sein zumindest den Salt etwas komlizierter zu gestallten.

                  Kommentar


                  • #10
                    "Programme die Hash's entschlüsseln können" gut, dann war hier die Wortwahl unglücklich gewählt
                    Btw. ich glaub das hier wird Offtopic XD

                    @splash_iem
                    Prüfen tust du das mit isset.
                    Tutorials dazu gibts wie Sand am Meer =p

                    Kommentar


                    • #11
                      Vielen Dank für die Antworten

                      Ich setze mich noch einmal ran, und dann poste ich es vll noch einmal

                      LG

                      Kommentar


                      • #12
                        das mit dem $password = md5($_POST["password"]); klappt iwie nicht...

                        der gibt mir dann immer aus, dass das bn und oder pw falsch ist - warum?

                        Kann das vll an der Tabelle liegen?

                        Code:
                        CREATE TABLE benutzerdaten (
                          Id Int(11) NOT NULL auto_increment,
                          Nickname VarChar(50) NOT NULL default '',
                          Kennwort VarChar(50) NOT NULL default '',
                          Nachname VarChar(50) NOT NULL default '',
                          Vorname VarChar(50) NOT NULL default '',
                          PRIMARY KEY (Id)
                        )

                        Kommentar


                        • #13
                          Es muss natürlich auch der md5 Hash des Passwortes in der Datenbank gespeichert werden!

                          Kommentar


                          • #14
                            hab ich mir doch gedacht

                            wie muss ich die spalte denn nennen?

                            Kommentar


                            • #15
                              Zitat von splash_iem Beitrag anzeigen
                              wie muss ich die spalte denn nennen?
                              Das bleibt dir überlassen
                              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                              Kommentar

                              Lädt...
                              X