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,
Notice: Undefined index: User in C:\xampp\htdocs\website met 2fa\welcome.php on line 35
Dan is die sessie niet aangemaakt als je die oproept. Of je mist een session_start();
Ik heb de sessie laten starten via:
<?php
$_SESSION['User'] =$row['UName'];
?>
Dit is het hele login formulier:
<?php
session_start();
require_once('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:../welcome.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');
}
?>
Ik heb gekeken naar de geïnstalleerde php versie, via phpinfo();.
Het blijkt dat op mijn server staat php versie 7.3.1 geïnstalleerd en op mijn XAMPP, staat php versie 7.3.2.
Maakt dat uit?
- Ariën - op 11/03/2019 12:50:58

Wat staat er in
<?php
print_r($_SESSION);
?>


Al geprobeerd?
Jin vanTongeren op 11/03/2019 16:51:24

Notice: Undefined index: User in C:\xampp\htdocs\website met 2fa\welcome.php on line 35


Zei ik al bovenaan de pagina.
Dat lijkt mij sterk. Ik noem geen User in die functie.
En toch is het wel zo.
Ik ga proberen om XAMPP opnieuw te installeren, maar nu met een oudere PHP versie. (php versie 7.3.1)
Hopen dat het downgraden van de PHP versie wel lukt...
Ik denk dat je naar een verkeerd stukje code kijkt? Want je moet dan een array zien. Of gebruik je print i.p.v. print_r??
owh ja.
Ik zie het al.
Ik had dit gedaan:
<?php
print_r($_SESSION['User']);
?>
Nu ik dit heb gedaan:
<?php
print_r($_SESSION);
?>
zie ik dit: Array ( )

Ik heb net XAMPP opnieuw geïnstalleerd naar 7.3.1, maar dat werkt helaas niet.
Ik zet in dat je geen sessies hebt aangemaakt. Het is geen bug in PHP.

[size=xsmall]Toevoeging op 11/03/2019 18:00:17:[/size]

<?php
session_start();
$_SESSION['User'] = array("Piet");
print_r($_SESSION['User']);
?>

Dit geeft hier Piet aan.

Reageren