Anzure Skrevet 12. mai 2015 Del Skrevet 12. mai 2015 Har søkt opp litt forskjellig og har funnet mange metoder å hashe passordet, men hvilken metode er mest sikker? Kom gjerne med eksempler, er veldig ny innen PHP. Lenke til kommentar
process Skrevet 12. mai 2015 Del Skrevet 12. mai 2015 (endret) Hash, med salt. http://php.net/manual/en/faq.passwords.php har mer info. Lenken over foreslår blowfish som algoritme, men det viktigste er å ikke benytte MD5 eller SHA1. Har du php5.5+ tilgjengelig ville jeg benyttet password hashing APIet. Endret 12. mai 2015 av process Lenke til kommentar
Thorbear Skrevet 12. mai 2015 Del Skrevet 12. mai 2015 password_hash() er det som skal brukes i alle nye script. Dersom du ikke har PHP 5.5 eller nyere finnes det et bibliotek som gir samme funksjoner helt tilbake til PHP 5.3 Ikke implementer noe hjemmesnekra greier. Lenke til kommentar
Anzure Skrevet 12. mai 2015 Forfatter Del Skrevet 12. mai 2015 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
Thorbear Skrevet 12. mai 2015 Del Skrevet 12. mai 2015 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
Anzure Skrevet 13. mai 2015 Forfatter Del Skrevet 13. mai 2015 (endret) 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 13. mai 2015 av waremanu Lenke til kommentar
Thorbear Skrevet 13. mai 2015 Del Skrevet 13. mai 2015 Dette så veldig riktig ut, og jeg kan ikke si jeg veit om noen umiddelbare forbedringer Håper du er like forsiktig med å unngå SQL-injections Lenke til kommentar
Anzure Skrevet 13. mai 2015 Forfatter Del Skrevet 13. mai 2015 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
Crowly Skrevet 17. mai 2015 Del Skrevet 17. mai 2015 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. 1 Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå