Gå til innhold

Glemt passord system


Anbefalte innlegg

Skrevet

Jeg har tenkt å lage et "glemt passord system" på en side, men er ikke helt sikker på hvordan jeg skal gjøre det...Planen min er noe sånn:

 

1. brukeren skriver inn e-mailen sin i et form og trykker submit.

2. en sjekk kjøres for å se om mailen eksisterer i databasen.

3. Hvis mailen er godkjent, blir det generert et tilfeldig passord på f.eks 6 bokstaver.

4. raden der e-mailen ble funnet blir oppdatert med et nye passordet.

5. en mail blir sendt til e-mailadressen som ble opogitt som inneholder det nye passordet.

 

Høres dette greit ut, eller blir det for komplisert? Og en ting til;

Hvordan får jeg generert et passord på 6 bokstaver/tall ?

bruker denne koden i en annen sammen heng, men det blir litt for langt...:

 

$nyttpassord = md5(uniqid(rand(), true));

Videoannonse
Annonse
Gjest Slettet+6132
Skrevet

For å generere et nytt pw fra den eksisterende funksjonen din kan du jo bruke:

 $nyttpw = substr(md5(uniqid(rand(), true)), 0,5);

siden dette bare skal vere midlertidig passord.

Skrevet (endret)

Det er vel ikke lurt å bruke md5 til å lage et ukryptert passord? Da bruker man jo bare 16 forskjellige tegn...

 

Her er en funksjon som lager et passord (fra phpfreaks tror jeg)

 

function makeRandomPassword() {
 $salt = "abcdefghijklmnpqrstuvwxyz0123456789";
 srand((double)microtime()*1000000); 
 	$i = 0;
 	while ($i <= 7) {
     $num = rand() % strlen($salt);
     $tmp = substr($salt, $num, 1);
     $pass = $pass . $tmp;
     $i++;
 	}
 	return $pass;
}

Endret av oro2
Skrevet (endret)
Jeg har tenkt å lage et "glemt passord system" på en side, men er ikke helt sikker på hvordan jeg skal gjøre det...Planen min er noe sånn:

 

1. brukeren skriver inn e-mailen sin i et form og trykker submit.

2. en sjekk kjøres for å se om mailen eksisterer i databasen.

3. Hvis mailen er godkjent, blir det generert et tilfeldig passord på f.eks 6 bokstaver.

4. raden der e-mailen ble funnet blir oppdatert med et nye passordet.

5. en mail blir sendt til e-mailadressen som ble opogitt som inneholder det nye passordet.

 

Høres dette greit ut, eller blir det for komplisert?

Synes det er litt for enkelt å endre noen andres passord. Riktignok ingen (stor) sikkerhetsrisiko, men kan fort bli _veldig_ irriterende om noen endrer passordet ditt ofte nok, og du må sjekke epost hver gang du vil logge deg på..

 

Foreslår følgende i stedet:

3. lag en tilfeldig streng på ~10 tegn og lagre denne i databasen.

4. send brukeren en mail som inneholder en link hvor denne strengen er med.

5. hvis brukeren klikker på linken, så kan du lage et nytt passord, eller evt. la dem taste inn et selv.

 

Og en ting til;

Hvordan får jeg generert et passord på 6 bokstaver/tall ?

bruker denne koden i en annen sammen heng, men det blir litt for langt...:

 

$nyttpassord = md5(uniqid(rand(), true));

Bare lag deg en streng som inneholder [a-zA-Z1-9] og plukk seks tilfeldige indekser fra denne. (som oro2 alt foreslå)

 

Så, når du skal lagre passordet i databasen, lager du først en ny tilfeldig streng på 6-10 tegn, et 'salt'. I stedet for å lagre selve passordet i databasen lagrer du, i hver sin kolonne, saltet og md5($salt . $passord).

Når brukeren prøver å logge seg inn henter du ut salt og digest fra databasen, og ser om md5($salt . $passord) gir samme resultat.

 

Fordelen med å bare lagre en digest av passordet er at brukerens passord fortsatt er trygt selv om uvedkommende får tilgang til databasen.

Hensikten med et salt er å hindre såkalte 'dictionary attacks'.

Endret av Frank2004

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...