Tha_Zaynt Skrevet 12. desember 2004 Skrevet 12. desember 2004 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));
Gjest Slettet+6132 Skrevet 12. desember 2004 Skrevet 12. desember 2004 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.
oro2 Skrevet 12. desember 2004 Skrevet 12. desember 2004 (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 12. desember 2004 av oro2
Tha_Zaynt Skrevet 12. desember 2004 Forfatter Skrevet 12. desember 2004 (endret) funksjonen skriver jo ikke ut noe som helst...fikk ikke noe error heller.. EDIT: Fant feilen... Endret 12. desember 2004 av Tha_Zaynt
Lemkin Skrevet 12. desember 2004 Skrevet 12. desember 2004 kanskje fordi du må bruke echo() for å få ut resultatet? Fuksjonen returnere $pass, men ingenting som sier at den skal skrive det ut
Frank2004 Skrevet 12. desember 2004 Skrevet 12. desember 2004 (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 12. desember 2004 av Frank2004
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å