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,
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? ;-)

Facebook maakt ook een fingerprint.

Owh, ik dacht dat ik mijn reactie onder mijn eigen topic had geplaatst..
Sorry daarvoor.


[size=xsmall]Toevoeging op 10/03/2019 16:34:52:[/size]

Nog even een vraag.
Als ik cookies gebruik, is het dan per se nodig om die cookies te versleutelen?
En zoja, hoe kan ik dat dan doen?
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.
Ik las op internet dat het "veiliger" zou zijn tegen hackers die de cookies willen misbruiken.
Zoiets.
Dan moet je die niet bij de bezoeker parkeren :P
Ben je niet in de war met sessies, waarvan de data op de server zelf staat?
Klok, klepel.

Wat je wel kunt doen is het cookie bepaalde flags meegeven.

Zie de documentatie.

Hint: secure en httponly parameter

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.
Wat staat er in
<?php
print_r($_SESSION);
?>

Reageren