/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Check af krypteret password inden ændring
Fra : Poul Møller Hansen


Dato : 21-07-01 19:50

Hej

Jeg bruger funktionen crypt() når jeg skal have oprettet brugere. Noget a'la

<?
$password = "topsecret";
$encrypted = crypt($password, "");
echo $encrypted;
?>

Nu vil jeg så gerne lave så brugeren selv kan ændre sit password ved at
angive sit nuværende og nye password.
Men hvordan checker jeg om nuværende password er korrekt ?


Mvh, Poul





 
 
Jesper Juul-Mortense~ (21-07-2001)
Kommentar
Fra : Jesper Juul-Mortense~


Dato : 21-07-01 19:58

On Sat, 21 Jul 2001 20:50:14 +0200, "Poul Møller Hansen"
<ph-list@teleservice.com> wrote:

>Nu vil jeg så gerne lave så brugeren selv kan ændre sit password ved at
>angive sit nuværende og nye password.
>Men hvordan checker jeg om nuværende password er korrekt ?

Cryptér det brugeren indtaster og sammenlign de to crypt'ede strenge

/Jesper

Poul Møller Hansen (21-07-2001)
Kommentar
Fra : Poul Møller Hansen


Dato : 21-07-01 20:04

Jo men problemet er bare at scriptet giver forskelligt output hver gang det
køres.

Poul


> Cryptér det brugeren indtaster og sammenlign de to crypt'ede strenge
>
> /Jesper



N/A (21-07-2001)
Kommentar
Fra : N/A


Dato : 21-07-01 20:29



Poul Møller Hansen (21-07-2001)
Kommentar
Fra : Poul Møller Hansen


Dato : 21-07-01 20:29

Jeg har faktisk en rand() funktion der, men med en konstant bliver de 2
første katakterer altid de samme.
Det kan vel kun give mindre sikkerhed. Hvis der er nogen der kan læse de
krypterede data ud selvfølgelig.

> Hmm.... Du mangler også en parameter i din crypt() funktion.
>
> Fra PHP manualen: "If the salt argument is not provided, one will be
> randomly generated by PHP"
>
> Det er derfor du får noget forskelligt hver gang.
>
> Prøv f.eks. følgende:
> $encrypted = crypt($password, CRYPT_STD_DES)
>
>



Jesper Juul-Mortense~ (21-07-2001)
Kommentar
Fra : Jesper Juul-Mortense~


Dato : 21-07-01 20:44

On Sat, 21 Jul 2001 21:29:02 +0200, "Poul Møller Hansen"
<ph-list@teleservice.com> wrote:

>Jeg har faktisk en rand() funktion der, men med en konstant bliver de 2
>første katakterer altid de samme.
>Det kan vel kun give mindre sikkerhed. Hvis der er nogen der kan læse de
>krypterede data ud selvfølgelig.

Det er noget jeg ikke forstår...

Hvis du bruger en rand() funktion, så vil dit resultat af crypt()
funktionen altid ændre sig - Hvordan kan du så nogensinde checke om en
bruger har indtastet korrekt password og derved lukke denne ind?
Eller er brugerens password måske resultatet af crypt() funktionen,
hvilket jo nok er en dårlig idé?

Du må nødvendigvis have en algoritme der krypterer en given streng til
det samme hver gang ellers ser jeg ingen mulighed for at kunne gemme
dette f.eks. i en database og sammenligne med hvad en bruger
indtaster.

Eller hva'? :)

/Jesper

Poul Møller Hansen (21-07-2001)
Kommentar
Fra : Poul Møller Hansen


Dato : 21-07-01 21:18

> Hvis du bruger en rand() funktion, så vil dit resultat af crypt()
> funktionen altid ændre sig - Hvordan kan du så nogensinde checke om en
> bruger har indtastet korrekt password og derved lukke denne ind?
> Eller er brugerens password måske resultatet af crypt() funktionen,
> hvilket jo nok er en dårlig idé?
>
> Du må nødvendigvis have en algoritme der krypterer en given streng til
> det samme hver gang ellers ser jeg ingen mulighed for at kunne gemme
> dette f.eks. i en database og sammenligne med hvad en bruger
> indtaster.
>

Jeg bruger det til AuthMySQL. Jeg har ingen anelse om hvordan den validerer
passwordet.
Jeg vil prøve idéen fra Christian Jørgensen.

Mange tak for svarene alle sammen,
Poul





Jesper Juul-Mortense~ (21-07-2001)
Kommentar
Fra : Jesper Juul-Mortense~


Dato : 21-07-01 21:59

On Sat, 21 Jul 2001 22:17:58 +0200, "Poul Møller Hansen"
<ph-list@teleservice.com> wrote:

>Jeg bruger det til AuthMySQL. Jeg har ingen anelse om hvordan den validerer
>passwordet.

Aha... SVJH så benytter AuthMySQL .htaccess som indgangsvinkel. Hvis
du smider din password-skifte-side i den del der kræver login, så er
det vel ikke nødvendigt at få brugerens gamle password ved skifte til
et nyt, da denne jo nødvendigvis allerede vil være logget på.

/Jesper

Jesper Juul-Mortense~ (21-07-2001)
Kommentar
Fra : Jesper Juul-Mortense~


Dato : 21-07-01 22:14

On Sat, 21 Jul 2001 22:17:58 +0200, "Poul Møller Hansen"
<ph-list@teleservice.com> wrote:

>Jeg bruger det til AuthMySQL. Jeg har ingen anelse om hvordan den validerer
>passwordet.

Iøvrigt så kan mySQL selv klare krypteringen til brug for AuthMySQL,
hvorfor man slet ikke behøver at kode sig ud af noget når ovennævnte
modul benyttes.

Eksempelvis: INSERT INTO mintabel (passwd) VALUES(PASSWORD('mitpw'))

/Jesper

Jacob Bunk Nielsen (21-07-2001)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 21-07-01 20:35

"Poul Møller Hansen" <ph-list@teleservice.com> writes:

> Jo men problemet er bare at scriptet giver forskelligt output hver gang det
> køres.

Kan du ikke bruge en MD5-sum i stedet for crypt()?

P.S. <http://www.usenet.dk/netikette/quote.html>.

--
Jacob
It compiles, let's ship it!

http://www.bunk.cc - nu med Emacs effekt

Jonas Koch Bentzen (21-07-2001)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 21-07-01 20:46

Poul Møller Hansen wrote:

> Jo men problemet er bare at scriptet giver forskelligt output hver gang
> det køres.

Husk det andet argument til crypt:

crypt("adgangskode", "a");

--
Jonas Koch Bentzen

Christian Joergensen (21-07-2001)
Kommentar
Fra : Christian Joergensen


Dato : 21-07-01 20:57

Poul Møller Hansen <ph-list@teleservice.com> wrote:

> Jo men problemet er bare at scriptet giver forskelligt output hver gang
> det køres.

Jeg vil lige ridse op for dig hvordan man crypterer med crypt(), og
verificerer det efterfølgende.

1. Brugeren indtaster sit password han vil bruge. det krypteres med:

crypt($password);

Resultatet gemmes i databasen

2. Når brugeren efterfølgende skal logge ind indtaster han sit password i
formularen og du checker med:

$db_password = "auNJuhd4sx2"; // password fra database

if (crypt($password, substr($db_password,0,2) == $db_password)
print "Password'et er korrekt!";
else
print "How lame are you?";

Altså, du bruger de 2 første karakterer i det krypterede password som
salt i crypt().

Håber du kan bruge det.

--
Christian Jørgensen | "Ford, you're turning into a penguin"
http://www.razor.dk | "Stop it"

Søg
Reklame
Statistik
Spørgsmål : 177507
Tips : 31968
Nyheder : 719565
Indlæg : 6408569
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste