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?
Dat staat er los van, je hebt het nu over 'ad(vertentie) blockers'. Als je een fingerprint in je database opslaat. Hoe zou je browser die moeten detecteren? ;-)
cookies zijn tekstbestanden bij de bezoeker. Waar haal je de wijsheid vandaan dat je die kan versleutelen?
Je kan inhoud erin versleutelen, maar veilig is het niet.
Nota bene: hier maakte @Remco je al op attent op de eerste pagina van deze thread.
Het is verleidelijk om alles meteen (met de nadruk op "alles" en "meteen") te vragen, maar het is veel leerzamer (en helpt je ook meer op de lange termijn) als je zelf probeert wijzer te worden in de materie.
EDIT: je moet er uiteraard altijd naar streven om niet of zo min mogelijk echt gevoelige informatie in cookies te stoppen. Grote kans dat je dit vaak elders beter kunt oplossen.
Ik heb nu deze 2 regels in mijn .htaccess bestand staan:
Header edit Set-Cookie ^(.*)$ "$1; HTTPOnly"
Header edit Set-Cookie ^(.*)$ "$1; Secure"
Ik zat er ook over na te denken om de cookie content / value te hashen.
Maar ik weet niet of dat wel heel veel zin heeft.
[size=xsmall]Toevoeging op 10/03/2019 20:15:02:[/size]
Na die lines in de htaccess neer te hebben gezet, doen mijn sessions het ineens niet meer.
In het bestand waar de gebruiker naartoe gaat als die is ingelogd, staat het volgende:
<?php
if(isset($_SESSION['User'])) {
// de rest van de code
}
else {
header("location: login.php?ingelogd=fail");
exit();
}
?>
En nu kom ik dus de hele tijd op de login pagina uit, terwijl ik dan wel ben ingelogd.
Zo word de session gemaakt:
<?php
if($row = mysqli_fetch_assoc($result)) {
if($row['2FAStatus'] == 0) {
$_SESSION['User'] =$row['UName'];
$_SESSION['ID'] =$row['ID'];
header("Location:../welcome.php?uid=".$row['UName']);
exit();
}
?>
Ik snap niet waarom de session 'User' niet wordt gestart...
Nee.
Ik heb mijn localhost (XAMPP) opnieuw geïnstalleerd, maar de sessions doen het nog steeds niet.
En ik weet zeker dat bovenaan session_start(); staat.