Beste,
Ik ben bezig met een 2FA systeem.
Misschien kent u dat wel van Google Authenticator. Dat een gebruiker dat wil inloggen, eerst een email krijgt waar een code in staat en vervolgens die code moet invoeren om uiteindelijk in te kunnen loggen.
Nu ben ik bezig met zo'n systeem, maar ik wil geen externe API'S gebruiken. (Bijv. Google Authenticator)
In plaats daarvan wil ik een eigen systeem maken.
Maar hoe zal ik dit het best aanpakken?
Een token genereren natuurlijk, met $token = random_bytes(5).
En een verloopdatum met $expires = date(U) + 300;
Zijn er nog extra kolommen die ik moet toevoegen in de MYSQLI database, om de veiligheid van dit systeem te verbeteren, of nog andere (veiligheids)suggesties?
Even nog een vraagje.
Als een gebruiker een verzoek heeft gemaakt, om de 2FA aan te zetten, wordt er dus een rij aangemaakt in de database.
Na 5 min wil ik dat de rij dat is aangemaakt, automatisch weer wordt verwijderd.
Kan dat?
Zoja, hoe kan ik dat regelen?
Oké.
Wat is het creationTime eigenlijk?
En nog even wat over de mysqli database tijd:
Wat voor type kolom zou ik het best voor de vervaldatum doen?
De kolom heet vervaldatum en is als type momenteel een timestamp.
Is dat goed? Of niet?
De code van de tijd (die dan in de vervaldatum kolom wordt gezet) is:
<?php
$expires = date("d-m-Y H:i:s") + 300;
?>
Is dit goed?
De datum die jij aanmaakt bij het creëren van het record.
En nog even wat over de mysqli database tijd:
Wat voor type kolom zou ik het best voor de vervaldatum doen?
De kolom heet vervaldatum en is als type momenteel een timestamp.
Is dat goed? Of niet?
Gebruik DATETIME als veld-type.
De code van de tijd (die dan in de vervaldatum kolom wordt gezet) is:
<?php
$expires = date("d-m-Y H:i:s") + 300;
?>
Is dit goed?
Nee, je kan dan NOW() gebruiken in je INSERT-query. Dit is een SQL-functie, en hoort niet tussen quotes.
Nee, je kan dan NOW() gebruiken in je INSERT-query. Dit is een SQL-functie, en hoort niet tussen quotes.
Oké.
Maar wat moet ik dan neerzetten in mijn prepared statement?
Ik heb een prepared statement waarin de parameters zo worden gebonden:
mysqli_stmt_bind_param($stmt, "ssss", $cookieID, $hashedToken, $expires, $hashedUID);
Maar nu moet ik dus $expires laten vervangen door wat?
[size=xsmall]Toevoeging op 09/03/2019 16:59:52:[/size]
Moet ik $expires nou laten vervangen door: "now()"?
En nog even over dit.
Ik heb als standaardwaarde current_time en als attribuut: on update current_timestamp.
Is dit correct?
Of moet ik dit aanpassen?
(het veld-type is al datetime)