Inlogscript check vanuit cookie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Remco Anoniem

Remco Anoniem

13/08/2022 11:23:49
Quote Anchor link
Goedemorgen,

Ik heb een simpel systeem die checkt of een cookie bestaat. Zoja dan word die al ingelogd, zo nee dan moet er eerst ingelogd worden.
Nu wil ik dat er ook gecheckt word vanuit de database of het wachtwoord nog overeen komt met die uit de cookie (Beide md5). Alleen krijg ik het niet voor elkaar.

Wie kan mij helpen? Zoals je vast aan het script kunt zien ben ik beginnend en ben ik op deze manier alles aan het testen wat de mogelijkheden zijn :).

De cookie Magazijnapp3 moet overeenkomen met het wachtwoord uit DB_users onder password. De username kan uit de cookie gehaald worden..


Alvast bedankt! :)

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
<?


if (isset($_COOKIE['Magazijnapp'])) {


  // Store data in session variables
  session_start();
  $_SESSION["loggedin"] = true;
  $_SESSION["id"] = $_COOKIE['Magazijnapp'];
  $_SESSION["username"] = $_COOKIE['Magazijnapp2'];
  $_SESSION["password"] = $_COOKIE['Magazijnapp3'];
  $idcookie = $_COOKIE['Magazijnapp'];
  $passwordcookie = $_COOKIE['Magazijnapp3'];
  $id2 = $_GET['url'];



}
else {


session_start();
$id = $_GET['DB_id'];
// Check if the user is logged in, if not then redirect him to login page
if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){
    header("location: login.php?url=$websiteurl/index.php");
    exit;



}
}



?>
 
PHP hulp

PHP hulp

09/03/2025 10:12:38
 
- Ariën  -
Beheerder

- Ariën -

13/08/2022 12:06:02
Quote Anchor link
- De ene keer gebruik je $_COOKIE['Magazijnapp2'] en dan gebruik je $_COOKIE['Magazijnapp3'], dat lijkt mij niet juist?

- Met welke reden sla je een wachtwoord op in een sessie? Dat lijkt mij nergens voor nodig. Het wachtwoord gebruik je enkel bij het inloggen, en daarna niet meer.

- md5() voor het hashen van een wachtwoord wordt al jaren lang afgeraden vanwege veiligheid. Gebruik liever password_hash() en verify_password().
 
Remco Anoniem

Remco Anoniem

13/08/2022 12:12:49
Quote Anchor link
Thnx! Daar ga ik allemaal even na kijken!

Weet jij dan wel een manier hoe ik kan checken of een password overeenkomt met een password uit een cookie? Gewoon uit nieuwsgierigheid.

Ik had bijv wel onderstaande maar krijg het niet werkend.

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
51
52
53
54
55
56
57
58
59
60
61
62
63
<?

  $usercookie
= $_COOKIE['Magazijnapp2'];
  $passwordcookie = $_COOKIE['Magazijnapp3'];


if (isset($_COOKIE['Magazijnapp'])) {


$sql = mysqli_query($conn, "SELECT * FROM users WHERE `username`='" . $usercookie . "'");
  while($print_data = mysqli_fetch_array($sql)){

    if ($print_data["password"] == "$passwordcookie")
        


  // Store data in session variables
  session_start();
  $_SESSION["loggedin"] = true;
  $_SESSION["id"] = $_COOKIE['Magazijnapp'];
  $_SESSION["username"] = $_COOKIE['Magazijnapp2'];
  $_SESSION["password"] = $_COOKIE['Magazijnapp3'];
  $idcookie = $_COOKIE['Magazijnapp'];
  $passwordcookie = $_COOKIE['Magazijnapp3'];
  $id2 = $_GET['url'];



}
else {


session_start();
$id = $_GET['DB_id'];
// Check if the user is logged in, if not then redirect him to login page
if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){
    header("location: login.php?url=$websiteurl/index.php");
    exit;



}
}


 

            else

        session_start();
$id = $_GET['DB_id'];
// Check if the user is logged in, if not then redirect him to login page
if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){
    header("location: login.php?url=$websiteurl/index.php");
    exit;



}

         }




?>
 
- Ariën  -
Beheerder

- Ariën -

13/08/2022 12:15:17
Quote Anchor link
Waarom zou je een wachtwoord opslaan in een cookie? Ik denk dat je jouw inlogsysteem beter kan herzien.
Ik moet er niet aan denken als iemand met een beetje XSS (Cross Site Scripting) mijn wachtwoord erop zou opduiken.

Je gebruikt je wachtwoord enkel bij het inloggen, en controleert deze alleen met wat er in de database staat.
Gewijzigd op 13/08/2022 12:16:04 door - Ariën -
 

13/08/2022 20:41:20
Quote Anchor link
Wachtwoorden opslaan (in de database of in een cookie) is contra wet- en regelgeving. Niet doen dus!

Hoe dan wel? Je slaat in een cookie het sessie ID op dat je uitgeeft nadat je eenmalig het wachtwoord hebt gecontroleerd. Controleren doe je ook niet met een opgeslagen wachtwoord, maar met een hash van het wachtwoord. PHP heeft daar twee functies voor: password_hash() en password_verify(). Gebruik dat. MD5 is zwaar antiek en niet veilig.

Je moet erg zuinig zijn met cookies die sessie ID's bevatten. De regel is dat je alleen inlogt en cookies instelt wanneer de verbinding met TLS is beveiligd (= HTTPS). Cookies stuur je vervolgens met het Same-Site attribuut, zodat alleen het domein dat de cookie heeft verstuurd er bij kan. En alleen met het HTTP Only attribuut, zodat JavaScript er juist niet bij kan. Dat is met opzet, voor de beveiliging.

Zoals je nu bezig bent is het inlogsysteem in hobby-stadium en onveilig. Open voor SQL-injectie en zonder HTTP-headers die XSS aan banden leggen, zonder CSRF-token, etc. Maar je kunt deze dingen wel allemaal stap voor stap gaan inbouwen. Een onmisbare bron hierbij is de OWASP-Cheat Sheet series. Begin bij voorkeur hier. Dan hoef je het wiel niet opnieuw uit te vinden, en kan je er toch je eigen draai aan geven (ook belangrijk!). Succes!
 



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.