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:
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:
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:
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?
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?