Toon posts:

[PHP] probleem met MD5

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik ben nu zelf een administratie systeem aan het bouwen, en dat betekend dat ik dus eerst met de beveiliging bezig ga. Nu maak ik iets heel vreemd tegen. Op het moment dat ik mijn password met MD5 behandel krijg ik steeds de verkeerde uitkomst, en deze uitkomst is iedere keer anders.

Dit is mijn script:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?
session_start();  // Sessie starten

echo $password;  // Kijken of ik het goed ingetikt heb (zelfs dit maakt hij al een md5 achtig iets van, wat dus fout is)

if ($auth == "yes") { // Als iemand het formulier invult word $auth = yes, om te voorkomen dat hij dit blijft herhalen
  $name = addslashes($name);
  $password = addslashes($password);
  $password = md5($password);
  if( !session_is_registered("login") ){ // Als de sessie er niet is maken wij hem
      $login = "";
      session_register("login");
  }
  if( !session_is_registered("password") ){ // Als de sessie er niet is maken wij hem
      $password = "";
      session_register("password");
  }
  echo "$name $password";  // controle van invoer en md5, hier krijg ik iedere keer een andere md5 oplossing en gaat het dus ook fout
}

$stylesheet = "[snip]";

include("../../../config/db.inc.php");  // database instructies laden

$result = mysql_query("select name, password from PFCauth where name='$name' and password='$password'");  // user en wachtwoord controle
if ($result && mysql_num_rows($result)) {
  echo "<html><head>$stylesheet</head><body>Je bent binnen!</body></html>";
} else { // en als het dan fout is komt het inlog scherm terug
  echo "
<html>
<head>$stylesheet</head>
<body>
   <form name=\"login\" method=\"post\" action=\"\">
      <input name=\"auth\" type=\"hidden\" value=\"yes\">
<table width=\"100%\" height=\"100%\" border=\"0\" cellpadding=\"0\">
   <tr>
       <td align=\"center\" valign=\"middle\">
           <table border=\"0\" cellpadding=\"0\" cellspacing=\"1\" bgcolor=\"#000000\">
               <tr bgcolor=\"#FFFFFF\">
                    <td>Name:</td><td><input type=\"text\" name=\"name\"></td>
               </tr>
               <tr bgcolor=\"#FFFFFF\">
                    <td>Password:</td><td><input type=\"password\" name=\"password\"></td>
               </tr>
               <tr bgcolor=\"#FFFFFF\"><td colspan=\"2\">
                    <div align=\"right\"><input type=\"submit\" name=\"Submit\" value=\"Submit\"></div></td>
                </tr>
            </table>
         </td>
      </tr>
</table>
   </form>
</body>
</html>";
}
?>

[ Voor 0% gewijzigd door drm op 22-10-2002 11:03 . Reden: iets minder layout f***-up. Let daar volgende keer zelf ff op. ]


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

alstie bij regel 4 al de fout in gaat, dan ligt het aan het submitten van je form
gebruik eens $_REQUEST om je form-variabelen op te halen

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Waarom doe je in vredesnaam een addslashes voor je password, als je er later toch een md5 overheen doet :?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
thomaske schreef op 22 oktober 2002 @ 11:01:
alstie bij regel 4 al de fout in gaat, dan ligt het aan het submitten van je form
gebruik eens $_REQUEST om je form-variabelen op te halen
Zelfde resultaat en als ik $name echo doet die het wel goed.
drm schreef op 22 oktober 2002 @ 11:04:
Waarom doe je in vredesnaam een addslashes voor je password, als je er later toch een md5 overheen doet :?
Om te voorkomen dat iemand probeerd php code erin te frommelen

[ Voor 0% gewijzigd door Verwijderd op 22-10-2002 11:20 . Reden: omdat hij niet volledig was :? ]


  • MisterData
  • Registratie: September 2001
  • Laatst online: 26-08 21:52
Als je MD5'ed dan wordt al die PHP-code zowieso omgezet naar een MD5-code, en die bevat alleen maar ciujfertjes en kleine letters (tussen a en f) dus addslashes is niet nodig :)

Verwijderd

Topicstarter
MisterData schreef op 22 oktober 2002 @ 11:17:
Als je MD5'ed dan wordt al die PHP-code zowieso omgezet naar een MD5-code, en die bevat alleen maar ciujfertjes en kleine letters (tussen a en f) dus addslashes is niet nodig :)
Had ik nog niet bij stilgestaan. Bedankt voor de tip, maar het probleem blijft ;)

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

het heeft helemaal niets metje MD5 te maken. Je wachtwoord komt gewoon niet goed door, dat laat je zelf al zijn door het te echo'en.

staan er geen vreemde tekens in je wachtwoord? en is het een 'md5-achtige' tekst? hoe ziet je wachtwoord er uit?

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

Topicstarter
Bijvoorbeeld bij de eerste keer dat ik het ter controle echo: b9d10f268fdc769283fb585b34c93901

En bij de tweede weer in het script dat ik he echo: 63a1cc6fcd06c378c8a5b44cafdf052e

En deze combinaties zijn iedere keer anders. Nu is het natuurlijk te verklaren dat md5 goed werkt, maar dat het bij de eerste keer dat ik het echo fout gaat. Maar waarom?

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

Verwijderd schreef op 22 oktober 2002 @ 11:28:
Bijvoorbeeld bij de eerste keer dat ik het ter controle echo: b9d10f268fdc769283fb585b34c93901

En bij de tweede weer in het script dat ik he echo: 63a1cc6fcd06c378c8a5b44cafdf052e

En deze combinaties zijn iedere keer anders. Nu is het natuurlijk te verklaren dat md5 goed werkt, maar dat het bij de eerste keer dat ik het echo fout gaat. Maar waarom?
sjah, maar wat post je naar de pagina? je echte password of je md5 password?

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

PHP:
1
2
3
4
5
6
7
8
9
10
11
  $password = addslashes($password); 
  $password = md5($password); 
  if( !session_is_registered("login") ){ // Als de sessie er niet is maken wij hem 
      $login = ""; 
      session_register("login"); 
  } 
  if( !session_is_registered("password") ){ // Als de sessie er niet is maken wij hem 
      $password = ""; 
      session_register("password"); 
  } 
  echo "$name $password";


Denk fout...

Elke keer als je hier langs komt, dus elke keer als auth geset is. Dan md5 hij het password dat hij in het sessie object heeft. Dan krijg je dus een MD5 van de vorige MD5.

Sessie variablen gaan voor Get Post Cookie variablen... !

Programmer - an organism that turns coffee into software.


Verwijderd

Topicstarter
het formulier post natuurlijk het echte password, dat ik meteen echo om te controleren of het goed getikt is. Ik kan in mijn formulier nl niet aangeven dat het md5 verzonden word, dus dat doe ik pas bij de verwerking. Ik ken de md5 hash van mijn password bijna uit mijn hoofd, dus als hij meteen een md5 hash zou maken zou ik dat door hebben.

Verwijderd

Topicstarter
LuCarD schreef op 22 oktober 2002 @ 11:36:
PHP:
1
2
3
4
5
6
7
8
9
10
11
  $password = addslashes($password); 
  $password = md5($password); 
  if( !session_is_registered("login") ){ // Als de sessie er niet is maken wij hem 
      $login = ""; 
      session_register("login"); 
  } 
  if( !session_is_registered("password") ){ // Als de sessie er niet is maken wij hem 
      $password = ""; 
      session_register("password"); 
  } 
  echo "$name $password";


Denk fout...

Elke keer als je hier langs komt, dus elke keer als auth geset is. Dan md5 hij het password dat hij in het sessie object heeft. Dan krijg je dus een MD5 van de vorige MD5.

Sessie variablen gaan voor Get Post Cookie variablen... !
Maar auth is alleen yes als het formulier voor het eerst verzonden word, en word ook niet als sessie opgeslagen. Hij zou er dus maar 1 keer langs moeten komen toch?

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Verwijderd schreef op 22 oktober 2002 @ 11:37:
[...]


Maar auth is alleen yes als het formulier voor het eerst verzonden word, en word ook niet als sessie opgeslagen. Hij zou er dus maar 1 keer langs moeten komen toch?
Normaal wel... maar hoe vaak heb je het al getest?

als het sessie variable eenmaal is geset. Moet je moeite doen om hem weg te krijgen. En aangezien jij al op regel 4 een rare waarde (een MD5 achtige) krijgt. Ga ik er vanuit dat hij uit een (vorige) sessie komt

Verander dit eens
PHP:
4
5
6
echo "POST:",$_POST['password'];
echo "<BR>SESSIE:",$_SESSION['password'];
echo "<BR>",$password;


[offtopic]
Post 3000 8)7

Programmer - an organism that turns coffee into software.


Verwijderd

Wat LuCarD zegt, doordat je voor de post vars en voor de session vars nu de zelfde namen hebt moet je ff van 1 van die 2 de namen veranderen.
Loginname: <input type="text" name="var_login"><br>
Password: <input type="text" name="var_password">

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

Verwijderd schreef op 22 oktober 2002 @ 19:51:
Wat LuCarD zegt, doordat je voor de post vars en voor de session vars nu de zelfde namen hebt moet je ff van 1 van die 2 de namen veranderen.

[...]
NEE (nja, liever niet)

je moet het oplossen zoals LuCarD het doet. Als je een sessie-variabele wil: dan gebruik je $_SESSION, als een post/get var wil, dan gebruik je $_REQUEST (of $_POST/$_GET)

dit is veel duidelijker, je weet precies waar de variabele vandaan komt!

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

thomaske schreef op 22 oktober 2002 @ 19:55:
[...]


NEE (nja, liever niet)

je moet het oplossen zoals LuCarD het doet. Als je een sessie-variabele wil: dan gebruik je $_SESSION, als een post/get var wil, dan gebruik je $_REQUEST (of $_POST/$_GET)

dit is veel duidelijker, je weet precies waar de variabele vandaan komt!
Mmmm, dat is ook wat LuCarD bedoelde. Waarschijnlijk niet goed gelezen.
Pagina: 1