hallo, ik ben bezig met een inlog systeempje. Alleen wanneer ik de gegevens ophaal uit mijn database, en vervolgens tel of de ingevoerde details bestaan, werkt hij niet.
Toen probeerde ik om alleen de user te controlleren en toen werkte die wel. Ik denk dus dat het probleem zit in het ophalen van het password met dat md5 gedoe.
Dit is het stukje code wat daarvoor zorgt.
SELECT * FROM users WHERE user = '$user' AND pass = md5('$pass')
Even iets heel anders: is het niet juist veel veiliger om md5-hashes verkort op te slaan? Dan zouden ze dus nooit omkeerbaar zijn?
Een md5-hash maakt 32 karakters aan, als je nu 20 karakters daarvan opslaat en telkens je md5-hash via [php]substr[/php]() verkort naar 20 en dan vergelijkt....of praat ik nu onzin?
Lijkt mij onzin, met 20 karakters is het eenvoudiger om een passende hash te maken dan met 32 karakters.
Maar wat je ook doet, zorg voor een goed wachtwoord. Dat is de basis van een veilig systeem, een wachtwoord van 4 karakters is altijd binnen enkele seconden gekraakt. Het maakt dan echt niet uit welke hashingmethode je gebruikt.
Er kunnen best dezelfde hashes in de database staan maar dan is altijd nog de gebruikersnaam anders. Desnoods sla je hem op met een unieke randomcode bijv.
<?php
$salt= 'DJHWU(*@^#923718236124tUEWYUT';
$pass = 'Password!123$';
$hash = md5($pass.$salt);
//Dit insert je in de DB
//Dit doe je op de pagina waar je wil authenticeren.
$query = "SELECT id FROM users WHERE username=username AND password=MD5(".$_POST['password'].$salt.")";
//wel natuurlijk $_POST[''] beveligen met bijv mysql_real_escape_string();
?>
ZO wordt het al een stuk moeilijker om een password te raden.