09. december 2004 - 19:49Der er
32 kommentarer og 1 løsning
kryptering af password?
Jeg har fået lavet mig et lille community. Men når en bruger opretter en bruger, er det så uheldigt at jeg kan se personens password i mysql databasen.
Hvordan kan man lave så jeg ikke kan det? Og det f.eks bliver skiftet ud med: srd3247238372dfnw i mysql databsen (Et eksempel).
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
$q = mysql_query("SELECT * FROM brugere where bruger='{$bruger}'") or die (mysql_error()); if (mysql_num_rows($q) == 1){ echo "Der findes allerede en bruger med navnet: \"$bruger\""; } else { mysql_query("INSERT INTO brugere (bruger, kodeord, email, kon, alder, city, landsdel) VALUES ('{$bruger}', '{$kodeord}','{$email}','{$kon}','{$alder}','{$city}','{$landsdel}')") OR DIE (mysql_error()); echo "Bruger oprettet"; } mysql_close(); ?>
Synes godt om
Slettet bruger
09. december 2004 - 19:56#5
MD5 er envejskryptering. Dvs. du kan kun kryptere dit password, ikke dekryptere. Så når du skal kontrollere dit password skal du kryptere inputtet og sammenligne det med det krypterede password i databasen!
$q = mysql_query("SELECT * FROM brugere where bruger='{$bruger}'") or die (mysql_error()); if (mysql_num_rows($q) == 1){ echo "Der findes allerede en bruger med navnet: \"$bruger\""; } else { mysql_query("INSERT INTO brugere (bruger, kodeord, email, kon, alder, city, landsdel) VALUES ('{$bruger}', '{md5($kodeord)}','{$email}','{$kon}','{$alder}','{$city}','{$landsdel}')") OR DIE (mysql_error()); echo "Bruger oprettet"; } mysql_close(); ?>
Synes godt om
Slettet bruger
09. december 2004 - 19:57#7
du kan evt. lave en strtolower() inden du krypterer det og inden du sammenligner inputtet i logind funktionen. Så er det nemlig ligemeget med store/små bogstaver..
$q = mysql_query("SELECT * FROM brugere where bruger='{$bruger}'") or die (mysql_error()); if (mysql_num_rows($q) == 1){ echo "Der findes allerede en bruger med navnet: \"$bruger\""; } else { $md5 = md5($kodeord); mysql_query("INSERT INTO brugere (bruger, kodeord, email, kon, alder, city, landsdel) VALUES ('{$bruger}', '{$md5}','{$email}','{$kon}','{$alder}','{$city}','{$landsdel}')") OR DIE (mysql_error()); echo "Bruger oprettet"; } mysql_close(); ?>
Du kan også bruge sha1() i stedet for md5(), den er lidt langsommere, men mere sikker (ikke at det betyder noget), da den returnerer en streng på 40 tegn.
Synes godt om
Slettet bruger
09. december 2004 - 20:05#14
googolplex -> Ved du godt hvor sikker md5 krypterede passwords er? :)
$result_user = mysql_query("select bruger from brugere where bruger = '$bruger'")
or die (mysql_error());
$result_pw = mysql_query("SELECT * FROM brugere WHERE kodeord = '".md5($kodeord)."'")
or die (mysql_error());
$array_user = mysql_fetch_array($result_user);
$array_pw = mysql_fetch_array($result_pw);
if($array_user['bruger'] == $bruger AND $array_pw['kodeord'] == $kodeord) {
echo 'korrekt kodeord';
} else { echo 'forkert kodeord'; } } }
?>
Synes godt om
Slettet bruger
09. december 2004 - 20:25#20
Tror du vil få mere ud af at skrive:
"SELECT * FROM brugere WHERE kodeord = '".md5($kodeord)."' AND bruger='".$bruger."'" og så checke med mysql_num_rows().. Og derudover kan det da betale sig at bruge $_POST til at hente dine variabler i stedet for &$HTTP_POST_VARS['login'] som er 'håbløst forældet'.
Men hvis du vil holde dig til dit nuværende script skal du rette if($array_user['bruger'] == $bruger AND $array_pw['kodeord'] == $kodeord)
til if($array_user['bruger'] == $bruger AND $array_pw['kodeord'] == md5($kodeord))
Synes godt om
Slettet bruger
09. december 2004 - 20:26#21
Jeg kan godt lave et eksempel på hvad jeg mener mysql_num_rows() metoden?
Din SQL-sætning som opretter en ny bruger skal så laves om til: "INSERT INTO brugere (bruger, kodeord, email, kon, alder, city, landsdel) VALUES ('".$bruger."', '".md5(strtolower($kodeord))."','".$email."','".$kon."','".$alder."','".$city."','".$landsdel."')"
Og i loginscriptet skal du lave en $_POST['kodeord'] = strtolower($_POST['kodeord']); lige inden SQL-queryen..
gartzen: men mere sikker (ikke at det betyder noget) - Jep ;)
Synes godt om
Ny brugerNybegynder
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.