Avatar billede nicocarlos Nybegynder
01. februar 2004 - 14:27 Der er 17 kommentarer og
1 løsning

md5 password recover

Hej, jeg skal have ændret lidt i mit script, da jeg har øget min sikkerhed lidt, men jer i tvivl om hvordan jeg skal hente et md5 password ud af min mySQL db:
Sådan her hentede jeg password da det ikke var md5, hvordan gør jeg nu?

$hent = mysql_query("select kodeord from brugere where mail='$_POST[mail]'") or die(mysql_error());
while ($ud = mysql_fetch_array($hent)) {
extract($ud);



takker
Avatar billede schaefner Juniormester
01. februar 2004 - 14:29 #1
Du gør det på nøjagtig samme måde som før, men hvad er det præcist du ønsker?
Avatar billede Slettet bruger
01. februar 2004 - 14:30 #2
hvor meget mere sikkert gør md5 det?
Avatar billede nicocarlos Nybegynder
01. februar 2004 - 14:30 #3
jeg har et script som gør at folk kan få deres kode sendt til deres email, men det ligger jo som md5 i min db, så ville høre om jeg skulle tage det ud på en sepcial måde?
Avatar billede schaefner Juniormester
01. februar 2004 - 14:30 #4
Men hvis det er fordi du vil sende kodeordet til brugeren (hvis vedkommende har glemt det) så kan du ikke bruge kodeordet i databasen til noget. Så kan du genere et nyt kodeord som du sender til brugeren.
Avatar billede krydset Nybegynder
01. februar 2004 - 14:31 #5
Hvis du skal tjekke med en md5 password skal du både md5  ved in og ud af database
extract(md5($ud));
Avatar billede nicocarlos Nybegynder
01. februar 2004 - 14:31 #6
wollsen, jeg går udfra det gør det lidt mere sikkert, hvad ville grunden ellers være til at lave det?
Avatar billede Slettet bruger
01. februar 2004 - 14:32 #7
Det ved jeg sørme ikke. Jeg har en hjemmeside med login system. Jeg bruger ikke md5! Og der er ingen som har logget sig ind bortset fra dem som har koden!
Avatar billede krydset Nybegynder
01. februar 2004 - 14:33 #8
som schaefner siger så kan man ikke decryptere passwordet.

Men så skal du måske bruge
base64_decode()
base64_encode()
Men ved ikke hvor stærke de er
Avatar billede nicocarlos Nybegynder
01. februar 2004 - 14:36 #9
okay, jeg vil så bare sende dem et nyt random password, istedet for det andet men den laver denne error:
Method Not Allowed
The requested method POST is not allowed for the URL /login/lost_pw.html.
Avatar billede schaefner Juniormester
01. februar 2004 - 14:37 #10
<?php
function createPassword($len=8) {
  $chars = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ123456789";
  mt_srand( (double) microtime() * 1000000);
  for ($i=1;$i<=$len;$i++) $out .= $chars[mt_rand(0,(strlen($chars)-1))];
  return $out;
}

$password = createPassword();
$md5_hash_password = md5($newpassword);
mysql_query("UPDATE brugere SET kodeord='".$md5_hash_password."' WHERE mail='".$_POST['mail']."'") or die(mysql_error());
?>

Så sender du så $password til brugeren. Vedkommende kan så logge ind med det og ændre det tilbage til et eller andet han/hun kan huske.
Avatar billede schaefner Juniormester
01. februar 2004 - 14:37 #11
$password = createPassword();
$md5_hash_password = md5($password);
Avatar billede nicocarlos Nybegynder
01. februar 2004 - 14:38 #12
dette er min form:
<html>
<head>
</head>
<body>

<form name="form1" method="post" action="">
  <table width="50%" border="0" cellspacing="0" cellpadding="4">
    <tr>
      <td>Please enter your email address</td>
      <td><input name="email_address" type="text" id="email_address"></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input name="recover" type="hidden" id="recover" value="recover">
        <input type="submit" name="Submit" value="Recover My Password!"></td>
    </tr>
  </table>
</form>
</body>
</html>

og dette er mit script:
<?
include 'db.php';

switch($_POST['recover']){
    default:
    include 'lost_pw.html';
    break;
   
    case "recover":
    recover_pw($_POST['email_address']);
    break;
}
function recover_pw($email_address){
    if(!$email_address){
        echo "You forgot to enter your Email address <strong>Knucklehead</strong><br />";
        include 'lost_pw.html';
        exit();
    }
    // quick check to see if record exists   
    $sql_check = mysql_query("SELECT * FROM users WHERE email_address='$email_address'");
    $sql_check_num = mysql_num_rows($sql_check);
    if($sql_check_num == 0){
        echo "No records found matching your email address<br />";
        include 'lost_pw.html';
        exit();
    }
    // Everything looks ok, generate password, update it and send it!
   
    function makeRandomPassword() {
          $salt = "abchefghjkmnpqrstuvwxyz0123456789";
          srand((double)microtime()*1000000);
          $i = 0;
          while ($i <= 7) {
                $num = rand() % 33;
                $tmp = substr($salt, $num, 1);
                $pass = $pass . $tmp;
                $i++;
          }
          return $pass;
    }

    $random_password = makeRandomPassword();

    $db_password = md5($random_password);

osv..
Avatar billede nicocarlos Nybegynder
01. februar 2004 - 14:39 #13
ville meget gerne at det kom til at virke :D, hvis i ville hjælpe mig til at rette det til:
Avatar billede nicocarlos Nybegynder
01. februar 2004 - 14:46 #14
hvis i tænker over der står noget indimellem er fordi jeg har taget en tutorial for et godt stykke tid siden, med hensyn til md5 pass :D
Avatar billede squashguy Nybegynder
01. februar 2004 - 14:47 #15
wollsen, md5 kan beskytte, hvis nogen skulle få adgang til databasen..

for at gøre MD5 lidt mere sikkert, kan man sætte en magisk streng på:

$password = md5($password."en magisk streng");

herved bliver passwordet sværere at brute force
Avatar billede nicocarlos Nybegynder
01. februar 2004 - 14:51 #16
squashguy, yep.
Kan du hjælpe med at rette det til? :D
Avatar billede nicocarlos Nybegynder
01. februar 2004 - 15:16 #17
jeg har fundet ud af det selv. Jeg gav bare min form en action :D
Avatar billede schaefner Juniormester
01. februar 2004 - 15:18 #18
Dit spørgsmål passer vel ikke rigtig til problemet så?
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