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 had de session_start(); al bovenaan (op de 1e regel) neergezet.
Of moet het 1 regel boven de $_SESSION['User']?
Het beste is direct bovenaan, uiteraard zonder dat er output voor staat.

Test mijn code eens in een los bestand?
Ik zie inderdaad de array piet.
(Array ( [0] => Piet ))
Dan is er niks mis met je sessies, maar in je script zelf ergens. Ik raad aan om even te debuggen of $row wel zijn data krijgt, en of je if-statement waarin je sessies staat, wel wordt bereikt.
Ik heb nu dit neergezet:
<?php
if($row['2FAStatus'] == 0) {
$_SESSION['User'] =$row['UName'];
$_SESSION['ID'] =$row['ID'];
print_r($_SESSION['User']);
exit();
}
?>
Nu krijg ik te zien:
JVT (Mijn gebruikersnaam op de website waarmee ik inlog, is JVT)
Dus hier is niets mis mee. (denk ik)
En zoals ik al zei: Op mijn server doen de sessions het perfect.
Alleen op de XAMPP niet.
Terwijl de code letterlijk hetzelfde is.
Waar heb je mijn code dan uitgetest?
Op dezelfde localhost.
Alleen in een ander apart bestand.
XAMPP? Dan werken je sessies toch gewoon?
Je probleem ligt dan ergens anders, dus volg het pad uit mijn vorige bericht.
Ja.
Het doet het ineens weer.
Ineens wordt ik weer ingelogd etc.
Ik heb GEEN IDEE wat er fout ging en ook GEEN IDEE wat er is gebeurd om het op te lossen.
Hij deed het ineens...
Voor de zekerheid: dit is mijn code:
<?php
session_start();
require 'connection.inc.php';
if(isset($_POST['Login'])) {
htmlspecialchars($userName = $_POST['UName']);
htmlspecialchars($password = $_POST['pwd']);
if(empty($_POST['UName']) || empty($_POST['pwd'])) {
header("location:../login.php?Empty= Vul alle velden in");
}
else {
$sql= "SELECT * FROM employee WHERE UName=? AND Pass=?";
$stmt = mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt, $sql)) {
header('Location: login.php?MYSQLI_ERROR');
}
else {
mysqli_stmt_bind_param($stmt, "ss", $userName, $password);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
}
if($row = mysqli_fetch_assoc($result)) {
if($row['2FAStatus'] == 0) {
$_SESSION['User'] = $row['UName'];
$_SESSION['ID'] =$row['ID'];
header("Location:../wellcome.php?uid=".$row['UName']);
exit();
}
else if ($row['2FAStatus'] == 1) {
if(isset($_COOKIE['remember'])) {
$_SESSION['User'] =$row['UName'];
$_SESSION['ID'] =$row['ID'];
header("Location:../wellcome.php?uid=".$row['UName']);
exit();
}
else {
header('Location: ../2FALogin.php?request=valid');
exit();
}
}
}
else {
header("location:../login.php?Invalid= Verkeerd wachtwoord/gebruikersnaam combinatie");
exit();
}
}
}
else {
header('Location: inlogfail.html');
}
?>
Misschien ziet u wat er fout ging en wat er is gebeurd om het op te lossen.
Ik weet het niet.
Geen idee, kwestie van debuggen volgende keer.

Maarre... Rauwe passwords zonder hash? :-/

Reageren