Ik ben bezig met een login systeem en wil het volgende bereiken.
Als de gebruiker zijn wachtwoord invult en verzend naar de server,
Dan moet de server het wachtwoord voorzien van de salt die wordt gebruikt.
Dus als de gebruiker het wachtwoord 'DitisGeheim' invoert en verzend dan moet de server de salt die aanwezig is met het wachtwoord "mengen".
Bijv :
ww : DitisGeheim ( min 6 chars, max 20 chars )
salt : MiJnS@lT# ( let op dit is een voorbeeld salt ! )
Resultaat : lD#itTiMsGeiheJim@
De salt moet telkens op dezelfde plekken in de string van de gebruiker komen.
Dit wil ik afhankelijk van de lengte van het wachtwoord laten zijn.
Omdat natuurlijk niet iedereen dezelfde lengte heeft als wachtwoord.
Nu heb ik voorbeelden gezien die "sub_str" gebruiken maar ik weet nog niet helemaal welke richting ik moet zoeken.
Hopelijk kan iemand mij in de juiste richting helpen zodat ik beetje kan uittesten wat wel of niet zal werken.
Is er eventueel ook een manier om met php of js het wachtwoord te encrypten voordat deze "echt" verzonden wordt naar de server om het "niet als plaintext" te verzenden ?
Als het kan, is het een kansloze toevoeging zolang je geen https gebruikt. En als je https gebruikt, is het niet meer nodig. ;-)
@Chris
Niets is perfect, het is nog steeds mogelijk. Maar gelukkig erg moeilijk =]
@Wouter
Doe niet moeilijk en koop een certificaat. Nogmaals: probeer niet zelf iets uit te rollen, jij bent geen expert, ik trouwens ook niet.
Jouw home-made oplossing zal vele malen MINDER veilig zijn en iets waar honderden experts over na gedacht hebben.
En wat bedoel je met "Ik gebruik op dit moment een AES class om het wachtwoord te beveiligen."?
Sla je een AES gecodeerde versie van wachtwoorden op in de database? Want dan is NIET de bedoeling. Sla hashes op, niet decodeerbare versies van wachtwoorden.
Als ik wachtwoord encrypt dan plaats ik normaal gezien een hash die in een van me config bestanden achter het ww.
Maar als ik naar jouw voorbeeld kijk gebruik je een compleet andere methode dan wat ik tot nu toe heb gezien op het internet.
Misschien zoek ik niet goed maar ben nog nooit zoiets tegen gekomen.
Jij gebruikt nu manier 2. AES is encryptie, en dus kun je het oorspronkelijke wachtwoord achterhalen.
Op het moment wordt bcrypt of pbkdf2 aanbevolen. Beide met een unieke salt per gebruiker natuurlijk.
De password_* functies zijn aan PHP 5.5 toegevoegd zodat PHP users (developers) makkelijker op een veilige manier 'wachtwoorden' op te slaan.
Voor PHP 5.3.7 tot 5.5 kun je https://github.com/ircmaxell/password_compat gebruiken.
Ga aub ZO SNEL MOGELIJK over naar de password_* functies.