PHP 2-Factor Autorisatie (2FA)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 4 5 6

- Ariën  -
Beheerder

- Ariën -

12/03/2019 09:41:21
Quote Anchor link
Daarom: Backuppen, backuppen en backuppen!
 
PHP hulp

PHP hulp

23/11/2024 11:04:18
 
Jin vanTongeren

Jin vanTongeren

12/03/2019 10:28:21
Quote Anchor link
Ja.
Ik heb net XAMPP opnieuw geïnstalleerd, maar de sessions doen het nog steeds niet.
Nog enige suggesties?
 
- Ariën  -
Beheerder

- Ariën -

12/03/2019 10:34:10
Quote Anchor link
- Ariën - op 12/03/2019 09:33:52:
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?
 
Thomas van den Heuvel

Thomas van den Heuvel

12/03/2019 11:47:48
Quote Anchor link
Jin vanTongeren op 12/03/2019 10:28:21:
de sessions doen het nog steeds niet.

Waar blijkt dit uit?

Indien het eerdere test script uit dit draadje werkt dan werken sessies gewoon naar behoren en zul je de fout ergens anders moeten zoeken.

Nota bene:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
htmlspecialchars($code = $_POST['2FACode']);
htmlspecialchars($email = $_GET['email']);
?>

Wat voor effect zou dit moeten hebben?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sql
= 'SELECT * FROM autorisatie WHERE uid=?;';
?>

Waarom zet je een punt-komma achter queries? Het standaard gedrag van MySQL(i) is volgens mij nog steeds dat het slechts een enkele query accepteert, en geen multiquery. En dat is maar goed ook.
Gewijzigd op 12/03/2019 11:50:48 door Thomas van den Heuvel
 
- Ariën  -
Beheerder

- Ariën -

12/03/2019 17:09:22
Quote Anchor link
Mijn beste advies is je code even compacter te maken om het daadwerkelijke probleem te isoleren.
In een code van honderden regels code kan je anders soms blijven turen, waarbij het toch slimmer is om even wat overbodige dingen uit je code te schrappen om te kijken waar het probleem nu daadwerkelijk zit.
 
Jin vanTongeren

Jin vanTongeren

12/03/2019 17:18:47
Quote Anchor link
Thomas van den Heuvel op 12/03/2019 11:47:48:
Nota bene:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
htmlspecialchars($code = $_POST['2FACode']);
htmlspecialchars($email = $_GET['email']);
?>

Wat voor effect zou dit moeten hebben?

de htmlspecialchars() is bedoelt tegen XSS attacks.
Als u een beter idee heeft, laat het me dan horen.
Thomas van den Heuvel op 12/03/2019 11:47:48:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sql
= 'SELECT * FROM autorisatie WHERE uid=?;';
?>

Waarom zet je een punt-komma achter queries? Het standaard gedrag van MySQL(i) is volgens mij nog steeds dat het slechts een enkele query accepteert, en geen multiquery. En dat is maar goed ook.

Ik had gehoord, dat je bij sommige servers ook de mysqli statement moet afsluiten.
Vandaar die 2 puntkomma's.

Ik heb het probleem van de sessions ook opgelost.
Wat ik heb gedaan:
Ik heb dit stuk (wat ik eerder had gepost, toen de sessions het weer deden):
Jin vanTongeren op 11/03/2019 18:41:51:
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?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');
    }

?>

Gekopieerd.
En nu doen de sessions het ineens.
Het enige verschil was, dat bij $_SESSION['User'] =$row['UName']; van de if($row['2FAStatus'] == 0) { een spatie stond tussen de = en de $row.
Ik weet niet of dit enige invloed heeft gehad.
Maar nadat ik dus deze code voor het inloggen zonder 2FA had gekopieerd, deed ineens de inlogcode met de 2FA.
Ik weet nog steeds niet wat ervoor heeft gezorgd dat de sessions het ineens deden..
 
- Ariën  -
Beheerder

- Ariën -

12/03/2019 18:06:28
Quote Anchor link
Ik zou die punt-komma's lekker achterwege laten. Het is leuk voor een sql-file die je in de CLI uitvoert, maar in queries heb je het niet nodig, tenzij je het echt nodig vindt om MySQLi's multi-queries te gebruiken.

Verder ben ik benieuwd waarom je $code = $_POST['2FACode'] in htmlspecialchars() gebruikt? Waarom zou je variabelen onnodig kopiëren? En waarom zou je jouw data verminkt in de database willen opslaan? htmlspecialchars() is meer bedoeld om het bij je output te gebruiken, en dus daar waar je data er weer uit komt.
 
Jin vanTongeren

Jin vanTongeren

12/03/2019 20:57:43
Quote Anchor link
Oké.
Heeft u ook nog een idee wat er aan de hand zou zijn geweest bij het session probleem?
Ik ben namelijk wel benieuwd, maar ik zou het echt niet weten...

Toevoeging op 12/03/2019 21:05:43:

Ik heb net weer ingelogd bij de localhost en je raad het al:
De sessions doen het ineens niet meer..
Ik heb letterlijk NIETS veranderd.
HELEMAAL NIETS.
Hoe kan dit???

Toevoeging op 12/03/2019 21:09:33:

Ik heb nu weer geprobeerd opnieuw in te loggen en het doet het ineens weer?!?
Sorry hoor, maar:
WTF??
Hoe kan dit?
LETTERLIJK NIETS GEDAAN EN INEENS DOEN DE SESSIONS HET WEER.
HOE DAN??

Is dit normaal in PHP of uitzonderlijk?
(Ik ben pas ongeveer een half jaar bezig met PHP)
 
- Ariën  -
Beheerder

- Ariën -

12/03/2019 21:26:21
Quote Anchor link
Probeer eens te achterhalen welke wijziging er voor verantwoordelijk is.
Het kan normaal gesproken niet zomaar opeens wel of niet in een dergelijke omgeving. Misschien staat er wat in je error_log.

Ik heb dit nog nooit gehoord, maar het kan misschien zelfs zijn dat Windows gruwelijk over de zeik is, of is het misschien wel een hardware probleem m.b.t. je opslag. Als PHP geen sessies kan schrijven moet je een foutmelding kunnen terughalen.
Ik vind het erg bijzonder.
Gewijzigd op 12/03/2019 21:27:57 door - Ariën -
 
Jin vanTongeren

Jin vanTongeren

13/03/2019 19:27:18
Quote Anchor link
Ik weet niet hoe het komt.
Wat ik gewoon de hele tijd ga doen is het volgende:
Ik heb een test document voor sessions.
Het gaat als volgt:
Het is een formulier, waar je iets willekeurigs kan invullen.
Dan wordt er een session gestart.
(
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
session_start();
$_SESSION['iets'] = $_POST['input'];
header('Location: sessions.php');?>

)
En dan wordt het resultaat van de sessions in een ander document weergegeven.
(
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
session_start();
if(isset($_SESSION['iets'])) {
    echo $_SESSION['iets'], "<br>";
echo 'ja';
}

else {
    echo 'niets';
}
)

?>

Elke keer als ik dit doe, dan doen de sessions van mijn website het ineens weer.
Ik heb geen idee waarom, maar het werkt wel :).
Gewijzigd op 13/03/2019 19:35:40 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

13/03/2019 19:37:18
Quote Anchor link
Werk je niet op verschillende domeinen/hostnames ofzo?
Dat je http://testsite1.test en http://testsite2.test hebt.

Misschien is er wel verschil door de www-prefix. Ik zou eens naar je URL kijken.
 
Jin vanTongeren

Jin vanTongeren

13/03/2019 21:18:03
Quote Anchor link
Nee.
Mijn website is jinvantongeren.nl
Dat is dan ook het enige dat ik heb.
als ik naar mijn localhost ga, type ik localhost/padnaarmijnbestand in.

Ik weet niet of de www prefix iets uitmaakt.
Misschien wel.
www.jinvantongeren.nl, werkt ook goed met sessions.
 
- Ariën  -
Beheerder

- Ariën -

13/03/2019 21:42:58
Quote Anchor link
Dan zou ik het niet weten.
Test het eens droog uit met een testbestand als eerste. Ik vermoed dat er een vage structuur in je script zit waardoor het niet lekker werkt.
 

Pagina: « vorige 1 2 3 4 5 6



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.