Hallo, ich möchte eine sichere Benutzerauthentifizierung programmieren, habe aber noch relativ wenig PHP-Kenntnisse.
Folgenden Code verwende ich um einen Benutzer in die Datenbank einzufügen. Bitte sagt mir, wie ich den Code noch sicherer machen kann.
Nun möchte ich mit password_verify() das Passwort beim Login überprüfen.
Ich weis aber leider nicht wie ich den Hash aus der Datenbank in eine Variable speichern kann um ihn mit dem eingegebenen PW vergleichen zu können.
Folgenden Code verwende ich um einen Benutzer in die Datenbank einzufügen. Bitte sagt mir, wie ich den Code noch sicherer machen kann.
PHP-Code:
<?php
include_once $_SERVER['DOCUMENT_ROOT'] . 'access.php';
@ $mysql = mysqli_connect($db_host, $db_user, $db_pwd, $db_name);
if (mysqli_connect_errno()) {
echo "<p>Fehler: Verbindung zur Datenbank nicht möglich. Versuchen Sie es zu einem späteren Zeitpunkt nochmal.</p>";
exit();
}
$user = filter_input(INPUT_POST, 'user', FILTER_SANITIZE_STRING);
$password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);
if (!get_magic_quotes_gpc()) {
$user = addslashes($user);
$password = addslashes($password);
}
if (!user || !$password) {
echo "<p>Bitte füllen Sie alle Felder aus.</p>";
exit();
}
$options = [
'cost' => 11,
'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
];
$password = password_hash($password, PASSWORD_BCRYPT, $options);
$query = "INSERT into users values ('" . $user . "', '" . $password . "', '" . NULL . "', '" . NULL . "')";
$result = mysqli_query($mysql, $query);
if ($result) {
echo "Der Benutzer wurde erfolgreich hinzugefügt.";
}
else {
echo "<p>Ein Fehler ist aufgetreten.</p>";
}
mysqli_close($mysql);
?>
Ich weis aber leider nicht wie ich den Hash aus der Datenbank in eine Variable speichern kann um ihn mit dem eingegebenen PW vergleichen zu können.

Kommentar