Esempio n. 1
2
function isValidLogin($user, $passwordGivenByUser)
{
    $hashedPassword = getHashedPassword($passwordGivenByUser, $user["salt"]);
    return $user['password'] == $hashedPassword;
}
function comparePasswords($hsPassword, $password)
{
    //Parse out the salt from the hsPassword
    $salt = substr($hsPassword, 0, SALT_LEN);
    $hsPassword = substr($hsPassword, SALT_LEN);
    //Get the hashed password
    $password = getHashedPassword($salt, $password);
    //Compare
    if ($password == $hsPassword) {
        return true;
    } else {
        return false;
    }
}
Esempio n. 3
0
}
// Benutzername und Passwort werden überprüft
// Schritt 1:
// Im Beispiel seien die Zugangsdaten in einer Textdatei gespeichert, welche
// im wesentlichen dem Aufbau einer Datei entspricht, wie diese der Apache mit
// der Methode htpasswd verwendet.
// Das wäre hier mit den Benutzernamen foo und bar und dem identischen(!) Passwort
// 'GeHeim' etwas wie:
// foo:$2y$05$AoeUm/2hL5sdySuNuH0CmeSCZN7DneDdmU3thyrFWgiboh3FYQ0ae:weitere Informationen
// bar:$2y$05$9971LHpPxCmZikyi3WqEd.1h8GE6QKfqT4RwS/FDINRqyzLcEHy.C:weitere Informationen
// Weiter wird der Benutzername beim Speichern stets klein geschrieben und man muss absichern,
// dass keine Leerzeichen am Beginn oder Ende des Strings mitgeliefert wurden:
$_POST['username'] = strtolower(trim($_POST['username']));
// Wir kapseln aber das Abholen des Passwortes, damit auch Datenbanken verwendet werden können.
// Dazu muss unten die Funktion  getHashedPassword($username) angepasst werden.
$hashedPassword = getHashedPassword($_POST['username']);
if (false == $hashedPassword) {
    show_login('', 'Den Benutzer gibt es nicht.');
    exit;
}
// Schritt 2:  Überprüfen des Passwortes
// leider gibt es noch ältere Installationen als PHP 5.5 - die password_verify() nicht kennen
if (!function_exists('password_verify')) {
    // Wenn es crypt() nicht gibt, dann ist das PHP so alt, dass sicherheitsrelaventes damit
    // nicht gemacht werden sollte:
    if (!function_exists('crypt')) {
        // es gibt auch noch ältere ...
        die("Sorry: Aber Sie sollten Ihr PHP wirklich updaten!");
    }
    // Wenn es password_verify() nicht gibt, dann bauen wir eine:
    function password_verify($password, $hashedPassword)
if (!($sql = connectToDatabase())) {
    sqlFail();
}
//Does the user exist?
$query = "SELECT * FROM user WHERE username='******'";
//Run query
if (!($queryResult = mysqli_query($sql, $query))) {
    sqlFail();
}
if (mysqli_num_rows($queryResult) != 0) {
    //User Name is already taken
    userNameUsed();
}
//Generate a salt, get a salted-hashed password appended to salt
$salt = generateSalt();
$password = getHashedPassword($salt, $password);
$password = $salt . $password;
//Add userName and password to database
$query = "INSERT INTO user (username, password) VALUES ('{$userName}', '{$password}')";
//Run query
if (!($queryResult = mysqli_query($sql, $query))) {
    sqlFail();
}
//Disconnect from the database
mysqli_close($sql);
//---------------------------------------------
//Called if user name already taken
//---------------------------------------------
function userNameUsed()
{
    mysqli_close($sql);
Esempio n. 5
0
//connects to database
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//shows errors
$userquery = "SELECT username,password FROM user";
function getHashedPassword($username, $conn)
{
    $stmt = $conn->prepare('SELECT password FROM user WHERE username = :username');
    $stmt->execute(array('username' => $username));
    $row = $stmt->fetch();
    var_dump($row);
    if ($row == false) {
        return false;
    }
    return $row['password'];
}
$passwordHash = getHashedPassword($username, $conn);
password_verify($password, $passwordHash);
var_dump($hashpass);
/* foreach ( $conn->query($userquery) as $row ) {
	echo $row['username']. " - " .$row['password']."<br>";
}

//this also works
if (password_verify($password, $hash)) {
	echo 'Password is valid!';
} else {
	echo 'Invalid password.';
}
 */
var_dump($password);
var_dump($hash);