functie md5 en sha1 werkt niet
Ik heb een functie gemaakt die kijkt of er md5 of sha1 gebruikt is. Vervolgend zou de functie het woord wachtwoord moeten encrypten. Maar dit doet hij niet.
Kan iemand mij helpen waar de fout zit?
alvast bedankt.
mijn code is:
function encrypt($invoer, $methode){
if($methode == "md5"){
return md5($invoer);
}else{
return sha1($invoer)
}
}
$invoer = "wachtwoord";
echo myHashing($invoer, $methode);
Variable $methode bestaat niet onderin je script?
Je defineert $methode niet bij het aanroepen van de functie.
https://www.parleys.com/tutorial/code-level-security-games-puzzles-java
Vanaf minuut 40 is het interessant/relevant.
Dat is het enige waarvan ik zeker weet dat het fout is.
Ok, dat is niet waar. Je lijkt md5/sha1 te willen gebruiken om wachtwoorden te hashen? Gebruik aub password_hash()
Vanaf minuut 40 is het interessant/relevant.
Dat is het enige waarvan ik zeker weet dat het fout is.
Ok, dat is niet waar. Je lijkt md5/sha1 te willen gebruiken om wachtwoorden te hashen? Gebruik aub password_hash()
Volgens mij is de functie "encrypt()" ook een standaardfunctie van PHP dus op deze manier is het vragen om problemen.
Ben, de extra suggesties zijn een vriendelijke service van de forum leden. md5 en sha1 zijn totaal niet meer veilig. Iets als sha256 is trouwens nog wel goed te doen en wat minder overkill als wat password_hash is (welke trouwens pas is toegevoegd in PHP 5.5).
Uiteraard is het handig om een suggestie te doen, maar doe het dan ook vriendelijk. Mijn punt is vooral dat het de vraag niet was, de vraag was "waarom werkt dit niet". Het antwoord daarop is niet "password_hash is veiliger".
- niet overeenkomende functie namen
- het niet defineren van $methode
- het vergeten van de ; bij de tweede return
Mocht het wel gekopieerd en geplakt zijn dan kan hij een witte pagina verwachten als error reporting uit staat doordat de missende ; een parse error genereert.
@Ben
Voor zover ik weet kan hij een oude tutorial aan het volgen zijn die beweert je te leren een veilig login systeem te schrijven met behulp van md5/sha1. In dat geval denkt hij het bovenstaande stuk code werkend te hebben, terwijl hij in werkelijkheid de suggestie om password_hash() te gebruiken nodig heeft. Dat is dus waar mijn suggestie vandaan kwam.
Verder was het absoluut niet de bedoeling onvriendelijk over te komen, maar als je een topic maakt dat neer komt op "hier is niet werkende code, zoek zelf maar uit waarom ik vindt dat het niet werkt, geef me de fix" dan hoef je niet meer te verwachten dan reacties die net zo kort door de bocht zijn. Als je die wel krijgt is het mooi meegenomen.
We hebben nu niet genoeg info om je echt te helpen, Robert. Het beste dan we kunnen doen is gokken. Is de code in dit topic de exacte code die voor problemen zorgt? Wat is het resultaat wanneer je de code uitvoert? Witte pagina? Een error? Niet de output die je verwacht? iets anders?
PS. password_hash() zit inderdaad vanaf 5.5 in de core van PHP. Vanaf 5.3.7 tot 5.5 zul je extra bestanden moeten includen: https://github.com/ircmaxell/password_compat. Dat zou geen probleem moeten zijn aangezien een redelijk recente PHP versie gebruiken ook nodig is voor een veilig inlog systeem.
Gewijzigd op 03/10/2015 11:25:01 door Dos Moonen
Ben van Velzen op 03/10/2015 02:44:07:
Uiteraard is het handig om een suggestie te doen, maar doe het dan ook vriendelijk.
Ik moet zeggen dat ik het wel mee vind vallen met de onvriendelijke opmerkingen. Mensen praten hier vaak op een "snelle" manier. Dus in plaats van "Ik zou je ten harte aanbevelen om als encryptiemethode geen gebruik te maken van MD5." staat er dan simpelweg "Gebruik beter geen MD5.". Zover ik kan zien is het in de bovengenoemde opmerkingen nergens onvriendelijk bedoeld. En geloof me ... soms gaat het er hier ook wel eens onvriendelijk aan toe, maar dan wordt er echt op een andere manier gepraat ;-)
Een functie encrypt noemen die vervolgens iets hasht is dus niet zo'n verstandige keuze...