Mijn vraag
Voor een project dat ik op school doe, moet ik een website bouwen. De front-end heb ik al af. Nu moet ik beginnen aan de back-end. (In PHP) Maar ik vraag me af waar ik rekening moet houden op het gebied van password hashing. Houdt er a.u.b rekening mee dat dit een propedeuseproject is. Mijn website mag zo lek als een mandje zijn, het gaat nu vooral om de codekwaliteit en het opleveren van een werkende website. Toch hoor ik wel graag wat de best-practises zijn in een bepaalde situatie (daar leer ik ook van), maar het kan dus zijn, dat het (nog) te hoog gegrepen is voor mij.
1) Hoe verklein ik de kans dat wachtwoorden gekraakt worden met rainbowtables, brute-force, dictionary attacks en look-up tables?
*Is het voldoende om password_hash() te gebruiken (= PHP functie)
=> Zo nee, wat zijn mijn mogelijkheden, om dit risico zelf te beperken?
a) Voldoende sterke wachtwoorden (lees: wachtwoorden > 30 karakters) te gebruiken.
b) andere, betere oplossingen?
Nadeel aan wachtwoorden > 30 karakters is natuurlijk, dat dit niet echt gebruikersvriendelijk is. Ik ben bang dat je hier ook een flink stuk schijnveiligheid mee creëert. Een hoop mensen zullen hun wachtwoord opschrijven in een word document of in hun agenda.
2) Zijn prepared statements (gebruik PDO) voldoende om de kans op (welke vorm dan ook van) injection, veroorzaakt door het toestaan van vreemde tekens in wachtwoorden te beperken?
Ik heb al een discussie gehad met de docent, of de kans op injection aanzienlijk toeneemt als je vreemde tekens toestaat. Als ik hem goed begrepen heb, is het geen probleem om vreemde tekens te gebruiken, maar op het moment dat (groepjes) van vreemde tekens naast elkaar staan, dit tot ongewenste situaties kan leiden. Mijn docent gaf het advies om prepared statements te gebruiken, om injection te voorkomen. Maar is dit advies compleet?
3) Voldoet Bcrypt of is het verstandig om ARGON 2 te gebruiken?
password_hash() gebruikt standaard het Bcrypt algoritme om een wachtwoord te hashen. Is het verstandig om ARGON 2 te gebruiken, omdat dit veiliger is. (wordt aangeraden door OWASP). Het voordeel aan het standaard algoritme, is dat dit continue geüpdatet wordt. Maar het nadeel is, dat je Bcrypt moet gebruiken. Welke voordelen en nadelen wegen nou zwaarder?
Relevante software en hardware die ik gebruik[
-Windows laptop (i7 6700HQ 8GB RAM en GTX950m GPU)
-XAMPP
Wat ik al gevonden of geprobeerd heb
Ik heb al flink gegoogled en aan mijn docent zijn mening hoe ik dingen zou moeten implementeren. Maar ik blijf toch zitten met vragen. Vooral, omdat ik niet alles op google gevonden krijg (verkeerde zoektermen, misschien) en mijn docent veel vragen beantwoord, met dat hij het ook niet weet, omdat hij geen securityachtergrond heeft, maar dit soort zaken altijd uitbesteedt.
Voor een project dat ik op school doe, moet ik een website bouwen. De front-end heb ik al af. Nu moet ik beginnen aan de back-end. (In PHP) Maar ik vraag me af waar ik rekening moet houden op het gebied van password hashing. Houdt er a.u.b rekening mee dat dit een propedeuseproject is. Mijn website mag zo lek als een mandje zijn, het gaat nu vooral om de codekwaliteit en het opleveren van een werkende website. Toch hoor ik wel graag wat de best-practises zijn in een bepaalde situatie (daar leer ik ook van), maar het kan dus zijn, dat het (nog) te hoog gegrepen is voor mij.
1) Hoe verklein ik de kans dat wachtwoorden gekraakt worden met rainbowtables, brute-force, dictionary attacks en look-up tables?
*Is het voldoende om password_hash() te gebruiken (= PHP functie)
=> Zo nee, wat zijn mijn mogelijkheden, om dit risico zelf te beperken?
a) Voldoende sterke wachtwoorden (lees: wachtwoorden > 30 karakters) te gebruiken.
b) andere, betere oplossingen?
Nadeel aan wachtwoorden > 30 karakters is natuurlijk, dat dit niet echt gebruikersvriendelijk is. Ik ben bang dat je hier ook een flink stuk schijnveiligheid mee creëert. Een hoop mensen zullen hun wachtwoord opschrijven in een word document of in hun agenda.
2) Zijn prepared statements (gebruik PDO) voldoende om de kans op (welke vorm dan ook van) injection, veroorzaakt door het toestaan van vreemde tekens in wachtwoorden te beperken?
Ik heb al een discussie gehad met de docent, of de kans op injection aanzienlijk toeneemt als je vreemde tekens toestaat. Als ik hem goed begrepen heb, is het geen probleem om vreemde tekens te gebruiken, maar op het moment dat (groepjes) van vreemde tekens naast elkaar staan, dit tot ongewenste situaties kan leiden. Mijn docent gaf het advies om prepared statements te gebruiken, om injection te voorkomen. Maar is dit advies compleet?
3) Voldoet Bcrypt of is het verstandig om ARGON 2 te gebruiken?
password_hash() gebruikt standaard het Bcrypt algoritme om een wachtwoord te hashen. Is het verstandig om ARGON 2 te gebruiken, omdat dit veiliger is. (wordt aangeraden door OWASP). Het voordeel aan het standaard algoritme, is dat dit continue geüpdatet wordt. Maar het nadeel is, dat je Bcrypt moet gebruiken. Welke voordelen en nadelen wegen nou zwaarder?
Relevante software en hardware die ik gebruik[
-Windows laptop (i7 6700HQ 8GB RAM en GTX950m GPU)
-XAMPP
Wat ik al gevonden of geprobeerd heb
Ik heb al flink gegoogled en aan mijn docent zijn mening hoe ik dingen zou moeten implementeren. Maar ik blijf toch zitten met vragen. Vooral, omdat ik niet alles op google gevonden krijg (verkeerde zoektermen, misschien) en mijn docent veel vragen beantwoord, met dat hij het ook niet weet, omdat hij geen securityachtergrond heeft, maar dit soort zaken altijd uitbesteedt.