Gå til innhold

Lagre passord sikkert i MySQL


Anbefalte innlegg

Videoannonse
Annonse

Jeg har ikke helt greie på hvilken PHP versjon jeg bruker, jeg bruker Xampp nå. Så dette er det mest optimale? Lagre passord:

            $hash = password_hash($pass, PASSWORD_BCRYPT);
            // Denne lagres i databasen når man registrerer seg.

Sjekke passord:

            if (password_verify($pass, $hash)) {
                // Riktig passord.
            }
Lenke til kommentar

Om du bruker siste versjon av XAMPP så har du i følge deres nettside PHP 5.6.

 

Implementasjonsforslaget ditt ser stort sett OK ut.

Om du skal være helt på den sikre siden så kan det være en idé å bruke PASSWORD_DEFAULT som algoritme, men det krever også at du håndterer situasjonen der default algoritme har endret seg (det er dette password_needs_rehash() er til). Dette er mest sansynlig ikke nødvendig i ditt tilfelle.

Lenke til kommentar

Om du bruker siste versjon av XAMPP så har du i følge deres nettside PHP 5.6.

 

Implementasjonsforslaget ditt ser stort sett OK ut.

Om du skal være helt på den sikre siden så kan det være en idé å bruke PASSWORD_DEFAULT som algoritme, men det krever også at du håndterer situasjonen der default algoritme har endret seg (det er dette password_needs_rehash() er til). Dette er mest sansynlig ikke nødvendig i ditt tilfelle.

Foretrekker å være på den sikre siden. Er dette riktig, trengs det noen forbedringer?

Logge inn:

if (password_verify($pass, $hash)) {
    if (password_needs_rehash($hash, PASSWORD_DEFAULT)) {
        $hash = password_hash($pass, PASSWORD_DEFAULT);
        // Lagre ny passord hash i databasen.
    }
    // Riktig passord, logg inn...
}

Registrering:

       $hash = password_hash($pass, PASSWORD_DEFAULT);
       // Denne lagres i databasen når man registrerer seg.
Endret av waremanu
Lenke til kommentar

Det stemmer vel at du må lage et prepared statement og bruke "?" der du skal ha en variabel og deretter erstatte alle "?" med variabelen? Ihvertfall sånn jeg gjør det i Java, vet ikke helt hvordan det gjøres i PHP ennå. Haha, er det bare meg som synes PHP er rotete i forhold til Java? D:

Lenke til kommentar

Prepared statements kan skrive med både ? og :navn.

 

PDO:

$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)");
$stmt->bindParam(1, $name);
$stmt->bindParam(2, $value);

$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);
Jeg fortrekker den siste da det blir med tydelig hva som hører sammen.
  • Liker 1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...