Avatar billede ronster762 Nybegynder
24. januar 2004 - 17:40 Der er 15 kommentarer og
1 løsning

hvordan bruger man Kryptering/ dekryptering

jeg har aldri prøvet at bruge kryptering før.
Så det jeg leder efter er en helt grundlægende forklaring.

Når jeg med en <form> sende et loginbruger navn og password til en php fil som tjekker om det står i en mysql DB tabel. Hvordan kryptere jeg så det inden det sendes med og står med klar tekst oppe i adresselinien(er jo ikke lige så smart).
Og hvordan dekryptere jeg det så, inden jeg skal foretage tjekket i min php til?
Avatar billede jakobclausen Nybegynder
24. januar 2004 - 17:45 #1
Hvis du i din form bruger method="post" vil det jo ikke komme til at stå i adresse linien.

Du kan bruge funktionen crypt(): http://dk.php.net/manual/en/function.crypt.php
Avatar billede googolplex Novice
24. januar 2004 - 17:48 #2
Du skal bruge funktionen md5() til at kryptere det password brugeren taster ind når en kontoen oprettes. Derved får den en 'hash', der er en krypteret streng, der IKKE kan dekrypteres.

Nå brugeren efterfølgende vil logge ind, kryptere du det indtastede password og sammenligning med den krypterede streng i databasen.
Avatar billede sukos Juniormester
24. januar 2004 - 17:48 #3
Du kan ikke "dekryptere", eller jo, hvis du har en comp til hele tiden at stå og "dekryptere", men så bliver man ikke logget ind før efter lang tid.

Brug POST i stedet for GET i din formular, for at bruger og pass ikke vises i adresse-linien.

I db'en kan du f.eks. gemme et password som md5() krypteret. Det gi'r en streng på op til 32 tegn
<?php
echo md5("sukos");
?>

Når du så sammenligner, md5() kryptere du pasword'et førend sammenligningen.

For nu at vise hvordan det gøres på showsource.dk:

$check = mysql_query("SELECT `brugernavn` FROM `sh_brugere` WHERE `brugernavn` = '". $_POST["loginnavn"] ."' AND `password` = md5('". $_POST["pass"] ."')") or die (mysql_error());
Avatar billede ronster762 Nybegynder
24. januar 2004 - 17:51 #4
ok men selvom man bruger POST bør man så ikke stadig bruge noget crypt
Avatar billede googolplex Novice
24. januar 2004 - 17:55 #5
Prøver lige igen...

Du skal bruge funktionen md5() til at kryptere det password brugeren taster ind når en konto oprettes. Derved får den en 'hash', der er en krypteret streng, der IKKE kan dekrypteres.

Nå brugeren efterfølgende vil logge ind, krypterer du det indtastede password og sammenligner det med den krypterede streng i databasen.

Det betyder naturligvis at du ikke kan sende en brugeren det gamle password, hvis han/hun glemmer det, men du må generere et tilfældigt password og sende det, hvorefter brugen logger ind og laver et nyt.

Til gengæld kan man ikke se alle dine brugeres passwords, hvis man skulle få adgang til databasen, da de jo ligger krypterede.
Avatar billede ronster762 Nybegynder
24. januar 2004 - 17:56 #6
/sukos: er det rigtigt forstået at, det vil sige at man kun gemmer passworded som kryteret og derfor tjekker man bare om de 2 krypterede strenge er ens?
Avatar billede ronster762 Nybegynder
24. januar 2004 - 18:02 #7
ok jeg forstår bare ikke helt hvordan det bliver mere sikkert af den grund. Så kan man(dygtig snydepels) bare sende den samme streng(altså kode efter den har været igennem md5) med manuelt som så reelt er passworded?
Avatar billede jakobclausen Nybegynder
24. januar 2004 - 18:04 #8
Du kan rolig vruge post uden kryptering
Avatar billede sukos Juniormester
24. januar 2004 - 18:07 #9
I mit eks. bliver POST password jo først md5() krypteret ved sammenligningen i sql-sætningen. Så kan ikke lige se hvordan man kan være "dygtig" og sende den krypterede streng med?
Avatar billede ronster762 Nybegynder
24. januar 2004 - 18:26 #10
jeg beklager, jeg kan godt se ved efter tanke at det kan man ikke ...
mange tak for hjælpen.
det var hvis sukos, der kom med et fyldestgørende svar.
Avatar billede jakobclausen Nybegynder
24. januar 2004 - 18:28 #11
Hmm hvad er der forkert i mit svar ?
Avatar billede ronster762 Nybegynder
24. januar 2004 - 18:31 #12
/jakob: ikke noget men jeg måtte jo vælge den der kom med et uddybende svar først.
Avatar billede jakobclausen Nybegynder
24. januar 2004 - 18:32 #13
ronster762 >> Der er også mulighed for at dele pointene.
Avatar billede ronster762 Nybegynder
24. januar 2004 - 18:38 #14
beklager det tænkte jeg ikke lige på.
Avatar billede sukos Juniormester
24. januar 2004 - 18:40 #15
Opretter gerne et spm for at dele lidt point! :O)
Avatar billede r*nger Nybegynder
24. januar 2004 - 19:08 #16
Hvis du ikke vil have at enhver half-assed hackerwannabe der tænder for en TCP-dumper og leder efter passwords kan fange dine brugeres password, må du ikke sende dem som klartekst, heller ikke i en POST. Det er ikke sikkert - det er bare 'out of sight, out of mind'.

Den eneste ordentlige måde at gøre det på, er ved at lave en SSL forbindelse, dvs. HTTPS.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester