Vraag & Antwoord

Webprogrammeren & scripting

[PHP5] Wachtwoorden gecodeerd opslaan

10 antwoorden
  • Beste forumgenoten, Wat is de beste encryptie om wachtwoorden in de database op te slaan? Ik las op internet al dat md5 en sha1 eigenlijk niet meer gebruikt moeten worden en dat je bijvoorbeeld sha2 kan gebruiken, maar ik weet eigenlijk niet zo goed waar ik nu uit kan kiezen, laat staan welke voordelen elke optie biedt. Iemand die me op weg kan helpen? Alvast bedankt, - Bas
  • Het is belangrijk het verschil tussen Hashes en Encryptie te kennen; hashes zijn een richting (dus als iets als hash in de database is opgeslagen kun je het niet meer terug omzetten naar het origineel), terwijl je encrypted dingen weer kunt decrypten naar het origineel. Voor zover ik weet is SHA1 nog niet op een dermate manier gekraakt dat het ook praktisch is te kraken, maar dat kan in de nabije toekomst natuurlijk wel gebeuren. Voor zover ik weet is SHA1 wel de "sterkste" hash-functie die door PHP (zonder uitbreidingen) wordt ondersteund, dus je hebt waarschijnlijk weinig keus. Wel is het slim om niet de hash van het wachtwoord alleen op te slaan, maar bijv. de hash van het wachtwoord en het IP adres van de gebruiker samen, dus sha1($sPassword.$_SERVER['REMOTE_ADDR']) of iets dergelijks, hoewel dat nog niet de beste optie is (IP adres kan nog wel eens dynamisch zijn bijvoorbeeld). Op GoT was hier laatst toevallig nog een topic over dat misschien interessant is: http://gathering.tweakers.net/forum/list_messages/1235709 Het gaat niet primair over dit onderwerp, maar het komt wel vrij uitgebreid aan bod. Succes :)
  • Stijn, dank je voor je antwoord, het is zeker interessant leesvoer en eigenlijk precies in het verlengde van wat ik zoek. Ik zocht inderdaad een veilige manier om een wachtwoord te hashen ipv te coderen, aangezien ik het niet nodig vind om volledige wachtwoorden in mijn database op te slaan. In het geval van een vergeten wachtwoord zorg ik wel voor een nieuwe tijdelijke versie die naar het e-mailadres van de gebruiker gaat. Nu even alle info opslaan, bookmarken en/of verwerken... :D - Bas
  • Voor zover ik weet is SHA1 ook nog "veilig". Een andere mogelijkheid om het wachtwoord veiliger op te slaan is om sha1(sha1($sPassword)) te gebruiken. Dus de sha1 hash van de sha1 hash van het wachtwoord op te slaan. In dat geval moeten er twee hashes worden gekraakt.
  • Je kunt je natuurlijk vreselijk druk maken. Maar ik zou gewoon een md5 hash maken. Tenzij je een transactiesysteem voor een bank gaat op zetten of zo. Je kunt ook nog een extra beveiliging doen, in de vorm van maximaal 5x een wachtwoord invoeren van een bepaald ip adres. De kans dat je in 5x een md5 collision produceert lijkt me verwaarsloosbaar klein.
  • [quote:369feb80cb="gerben"]Je kunt je natuurlijk vreselijk druk maken. Maar ik zou gewoon een md5 hash maken. Tenzij je een transactiesysteem voor een bank gaat op zetten of zo. Je kunt ook nog een extra beveiliging doen, in de vorm van maximaal 5x een wachtwoord invoeren van een bepaald ip adres. De kans dat je in 5x een md5 collision produceert lijkt me verwaarsloosbaar klein.[/quote:369feb80cb] officieel praten we dan niet meer over een encryptie hé het is alleen een verificatie hash...althans volgens mij verschillen de meningen weleens erover
  • Het gaat inderdaad om hashen, niet om encryptie. De hash zal waarschijnlijk wel onder andere gebaseerd worden op het wachtwoord, maar ook op andere factoren. Eenmaal ingelogd kan ik de gebruiker aan de hash herkennen en een sessie toewijzen. Voor kritieke punten (bijv. veranderen wachtwoord/emailadres) zal de gebruiker nogmaals geïdentificeerd worden dmv een wachtwoord. Koppeling van de hash aan een IP overweeg ik nog, waarschijnlijk maak ik dat optioneel bij het inloggen. - Bas
  • Ik zou de hash alleen gebruiken voor het inloggen. En daarna een sessie aanmaken.
  • [quote:aada609e27="BasHamar"]Eenmaal ingelogd kan ik de gebruiker aan de hash herkennen en een sessie toewijzen.[/quote:aada609e27] [quote:aada609e27="gerben"]Ik zou de hash alleen gebruiken voor het inloggen. En daarna een sessie aanmaken.[/quote:aada609e27] Volgens mij bedoelen we hetzelfde. ;) - Bas
  • Misschien wel bedoelen, maar niet schrijven. "Eenmaal ingelogd kan ik de gebruiker aan de hash herkennen..." Hier staat dus: ná het inloggen aan de hash herkennen. Dat moet zijn: tijdens.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.