• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage Sicherheit beim Login

Nakroma

Mitglied
Hey,

Ich wage mich gerade zum ersten mal an ein größeres Projekt, das heißt ein Projekt bei dem Sicherheit wesentlich mehr relevant ist als bei der selbstgemachten gammel Community Seite mit 10 Usern.

Zuerstmal habe ich einen langen Salt und einen Session Key lokal gespeichert, zufällig generiert.

Bei jeder Seite die mit Sessions interagiert, habe ich dieses Code Snippet am Anfang stehen:
Code:
session_start();
if (empty($_SESSION)) {
    session_regenerate_id(true);
}

Ich connecte dann zur Datenbank, escape alle strings und lese die Daten aus.
Ich vergleiche dann die Passwörter, welche mit sha512 und dem Salt gehasht werden:
Code:
public static function hashValue($str) {
    for ($x = 0; $x < 10000; $x++) {
        $str = hash('sha512', $str . self::$salt);
    }

    return $str;
}

Wenn alles stimmt, wird $_SESSION[session_key] mit der Datenbank-ID des Users gesetzt.
Bei Seiten die geschützt sind wird nach dem obigen Code mit session_start noch diese Abfrage durchgeführt und wenn keine Session da ist wird zurück zum Index geleitet:
Code:
if (!isset($_SESSION[$skey])) {
    header("Location: ?view=default");
    exit();
}

Ist diese Anwendung sicher? Ich habe den aktuellen Salt Thread hier im Forum durchgelesen und gesehen das man einen Random Salt für jeden einzelnen User generieren sollte, obwohl das ja eigentlich nur vor Bruteforce schützt, was ja eigentlich irrelevant ist wenn man ein Captcha benutzt?
Ansonsten, gibt es noch etwas was ich bedenken oder einbauen sollte?
 
Werbung:
Ist diese Anwendung sicher?
Wenn das die ganze Anwendung ist, ist sie sicher ;)
Scherz beiseite: Das Problem liegt immer in den Stellen, an die man nicht denkt.

Ich habe den aktuellen Salt Thread hier im Forum durchgelesen und gesehen das man einen Random Salt für jeden einzelnen User generieren sollte, obwohl das ja eigentlich nur vor Bruteforce schützt, was ja eigentlich irrelevant ist wenn man ein Captcha benutzt?
Das ist falsch. Das Captcha erschwert zwar auch Brute-Force-Angriffe, ist aber eher zur Unterscheidung Mensch-Maschine gedacht ( Completely Automated Public Turing test to tell Computers and Humans Apart ).
Dass jeder User seinen eigenen Salt haben soll, ermöglicht es, dass bei identischen Passwörtern unterschiedliche Hashes in der DB gspeichert sind. Zudem wird der Einsatz von Rainbow-Tabellen erschwert.

Vor Brute-Force-Attacken schützt relativ sicher das Mitzählen der fehlerhaften Login-Versuche und vorübergehendes Sperren des Logins bei überschreiten einer festgelegten Versucheanzahl.

Eine Schwachstelle können die von Benutzern selbstgewählten Passwörter sein ("passwort","1234","liebe","sex","gott" usw.). Ist die Möglichkeit gegeben, dass Benutzer ihre Passwörter ändern, sollten bestimmte Vorgaben erfüllt werden wie Mindestlänge, Gross- und Kleinschreibung, Ziffern und Buchstaben und ggfs. Sonderzeichen.
 
Werbung:
Zurück
Oben