Veilig inlogsysteem

  • Hoi iedereen,


    Voor school moet ik een veilig login/registratie systeem maken een daarachter een absentie script.
    Nu is de opdracht om het wachtwoord veiliger te maken dan MD5.


    Nu heb ik het volgende bedacht maar is mijn vraag. Is dit makkelijk te kraken?

    PHP
    <?php
    $invoer = sha1(mysql_real_escape_string($_POST['wachtwoord']));
        $salt = "GjtehGRJ527sTG";
        $pepper = "84JKDJGdjaHHda8";
        $uitvoer = md5($pepper.$invoer.$salt);
        $naam = mysql_real_escape_string($_POST['naam']);
    
    
        $db_invoer = mysql_query("INSERT INTO `gebruiker` (`gebruiker`, `wachtwoord`) VALUES ('$naam', '$uitvoer')");
    ?>


    Of is er nog een veiligere manier?

  • Citaat van bboy

    @BrokenTrack,
    MD5 is zeker niet veilig,
    Je kunt 'm decrypten met behulp van: http://www.md5decrypter.co.uk/


    Mijne kraakt die anders niet :)
    Ze gebruiken brute force. Ze hebben zeer veel standaard md5 wachtwoorden in de database gezet en bij een match heb je beet. Maar dat is dus volgens mij enkel met de gewone md5(), dubbel wordt al een stuk ingewikelder en zeker met die ik net opgaf.

  • ja zoals je in mijn voorbeeld ziet maak ik al gebruik van sha1 en md5, als het wachtwoord uit het tekstvlak gelezen word word ie in sha1 gecodeerd, vervolgens voeg ik de variabelen $salt en $pepper toe, en hierna word deze string nog eens in md5 gecodeerd.

  • Wanneer men weet op wat voor manier jij je password opslaat is de kans al groter dat hij kan worden gekraakt.


    Maar wanneer jij gebruik maakt van de hash technieken wordt dit moeilijker, denk hierbij aan grote reeks van hash tekens.


    Voorbeeld:

    PHP
    $password = array();
    $password['normal'] = "test";
    $password['sha1'] = sha1($password['normal']]);
    $password['sha512'] = hash("sha512", $password['sha1']);
    
    
    foreach( $password as $key => $pass ) {
         echo $key .' => '. $pass;
    }


    test dit uit en je zal zien dat de reeks veranderd, hoe meer tekens hoe veiliger het eigenlijk wordt. Aangezien bruteforcen heel veel tijd in beslag neem is een grote reeks aantekens al beter. Maar let op alles is te kraken niet beweren dat het niet zo is maar het duurd wel super lang voor dat het is gebeurd, maar het kan wel!

    School
    Tweedejaars Informatica Student @ Hogeschool Rotterdam.


    Webtalen
    - PHP ( OOP )
    - SQL
    - JavaScript i.c.m. jQuery framework
    - (x)HTML
    - CSS
    - Actionscript
    - XML


    Programmeertalen
    - Java
    - C#
    - Ruby i.c.m. on Rails framework

  • eeyk
    Uren? Beetje kort, niet? Mocht je gelijk hebben dan al een reden om MD5 niet te nemen. Het zou vele jaren moeten duren om een collision te vinden.



    Elke user heeft (waarschijnlijk) een eigen salt, daarnaast heeft het ook nog een eigen iteratie count. De combinatie zal zo goed als uniek zijn. Bruteforcen hoort al lang te duren, maar als je 8000-12000 keer die functie aanroept zal het bruteforcen 8000-12000 keer langer duren. Een hash genereren zal niet lang duren, dus tijden het inloggen zullen je gebruikers er niets van horen te merken, maar iemand die je hashes wilt bruteforcen? Die gaat het zeker merken!

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!