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?

Alvast bedankt,
Ik weet het niet.
Bij de login pagina, werden de sessions op precies dezelfde mannier aangegeven en toen werkte het wel.
Browser-f*ckup?
Ik weet het anders ook niet meer.
Ik heb net weer even getest om zonder 2FA in te loggen. Het resultaat:
De sessions doen het weer niet...
Is dat de enige voorwaarde waaraan voldaan wordt als de sessies niet werken?
Probeer anders je code even te verkleinen tot je het probleem vindt.

Ergens moet een fout zitten, of je browser is gewoon vreemd aan het doen.
Ik zou de complete logica van je applicatie nog eens langslopen. Met de vinger erbij. De eerste controlestructuur gaat bijvoorbeeld al de mist in:


<?php
if(!isset($_GET['request'])) {
    if($_GET['request'] !== 'valid') {
        header('../2FAVerify.php?error=invalidrequest');
        exit();
    }
}
?>


Als $_GET['request'] niet is geset (de eerste if), kan $_GET['request'] nooit 'valid' zijn (de tweede if).

Hoewel het strikt genomen niet meer nodig is, zou ik verder in de Location-header een absolute URL gebruiken, geen relatieve.
Oké.
Ik ben erachter gekomen dat het aan het volgende ligt:
De sessions worden opgeslagen naar de juiste directory. (C:/xampp/tmp)
Maar ze worden niet opgeslagen als cookie.
Want als ik dit neerzet:
echo $_SESSION['User'];
Zie ik mijn gebruikersnaam.
Maar ik zie linksbovenin bij google chrome niet dat de session is gestart. (geen PHPSESSID)
Dus hoe kan ik dit oplossen?
Wat zie je niet in Google Chrome?
Normaal gesproken kun je toch alle cookies zien?
En dan zie ik (op mijn website waar de sessions wel werken) PHPSESSID.
Maar dat zie ik nu dus niet staan.
En na even googlen, blijkt dat PHPSESSID, de standaard naam van PHP sessions te zijn.
Maar die staat er dus niet.
Ga eerst eens na of dit in elke browser gebeurt. En heb je pas iets aan php.ini aangepast, of andere sessie-afhankelijke configuratie dingen aan je site toegepast?
Ja, ik heb dingen aangepast.
Ik weet niet precies meer wat het was.
dus ik ga XAMPP weer opnieuw installeren.

Ik heb het in meerdere browsers getest (IE, Edge, Firefox) en ze doen allemaal hetzelfde.

Reageren