Klopt mijn beveiliging voor mijn login script?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Michiel v

michiel v

03/01/2012 16:37:43
Quote Anchor link
Ik lees hier ongeloofelijk veer over login script beveiligin waardoor ik de bomen door het bos niet meer kan zien en niet weet wat nou wel en niet sql injecties en andere mogelijke hacka cties tegen gaat.

Zie onderstaand mijn script, ik hoor graag of dit voldoende beveiligd is?

Groeten,

Michiel

Zie script:

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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
// Program: Login.php
 session_start();  

//Indien de checkbox er voor de checkbox een cookie is geplaatst
$password = $_COOKIE['cookiepassword'];
$logname = $_COOKIE['cookielogname'];
$checkboxchecked = $_COOKIE['cookiecheckboxchecked'];                                
    

     $sql = "SELECT eMailaddress, password  FROM useraccount
             WHERE eMailaddress ='$_POST[fusername]'"
;    
            
            
     $result = mysqli_query($cxn, $sql)or die("Couldn't execute query.");    
              
              
     $num = mysqli_num_rows($result);                
     if ($num > 0)  // login name was found        
          {
        $sql = "SELECT eMailaddress, password  FROM useraccount
                WHERE eMailaddress ='$_POST[fusername]'
                AND password= '$_POST[fpassword]' "
;
                
        $result2 = mysqli_query($cxn, $sql)or die("Couldn't execute query 2.");
        $num2 = mysqli_num_rows($result2);
        if ($num2 > 0)  // password is CORRECT        
        {
           $_SESSION['auth']="yes";                  
           $logname=  mysql_real_escape_string($_POST['fusername']); //password=md5('$_POST[fpassword]')"; //oud: $logname=$_POST['fusername'];
           $password= mysql_real_escape_string($_POST['fpassword']); // oud: $password=$_POST['fpassword'];
           $checkboxchecked = 'checked = "checked"';     //voor cookie plaatsten voor de checkbox
           $_SESSION['logname'] = $logname;
           $_SESSION['password'] = $password;  
           $_SESSION['wo'] = $checkboxchecked;  //voor cookie plaatsten voor de checkbox    
           $today = date("Y-m-d h:i:s");          
           $sql = "INSERT INTO useraccount (eMailaddress, password)
                   VALUES ('$logname','$today')"
;
           $result = mysqli_query($cxn, $sql) or die("Can't execute insert query.");
          
                           //E-mailadres & Wachtwoord onthouden door cookie plaatsen!
                        if(isset($_POST['wo'])) // wo is voor het opslaan van de checkbox wachtwoord opslaan
                        {
                            setcookie("cookielogname", $logname, time()+600*1, "/"); //3600*1 = 1uur
                            setcookie("cookiepassword", $password, time()+600*1, "/"); //3600*1 = 1uur
                            setcookie("cookiecheckboxchecked", $checkboxchecked, time()+600*1, "/"); //3600*1 = 1uur
                            //$checkboxchecked = 'checked = "checked"';    

                        
                        }
                            else
                            {
                            $logname= '';
                            $password='';
                        }

           header("Location: /s4new/listingrubriek-met-html-5.php?page=1");      
        }

        else    // password is NIET correct!            
        {
           $message="<strong>Uw  wachtwoord komt niet overeen </strong> met het e-mailadres, '$_POST[fusername]' ! <strong>Probeerd u het nog eens?</strong><br>";
                     //set a cookie
              
                      //E-mailadres onthouden indien het wachtwoord niet juist is, wachtwoord blijft leeg!

                        if(isset($_POST['wo'])) // wo is voor het opslaan van de checkbox wachtwoord opslaan
                        {
                            $logname= mysql_real_escape_string($_POST['fusername']);
                            $checkboxchecked = 'checked = "checked"';    
                        
                        }

                            else
                            {
                            $logname= mysql_real_escape_string($_POST['fusername']);
                            $password='';
                        }

                          
           include("../s4yincludes/login_form.inc");                  
        }
     }
                                              
     elseif ($num == 0)  // login naam NIET gevonden!    
     {  
        $message = "Het e-mailadres, <strong>'$_POST[fusername]'</strong> wat u heeft ingetypt <strong>bestaat niet! </strong>Probeerd u het nog eens?<br>";
        
                        //E-mailadres onthouden indien het wachtwoord niet juist is, wachtwoord blijft leeg!
                        if(isset($_POST['wo'])) // wo is voor het opslaan van de checkbox wachtwoord opslaan
                        {
                            $logname= mysql_real_escape_string($_POST['fusername']);
                                                
                        }

                            else
                            {
                            $logname= mysql_real_escape_string($_POST['fusername']);
                            $password='';
                        }

        
        
        include("../s4yincludes/login_form.inc");
     }

   break;                                            

                                          

    default:
                                      
        include("../s4yincludes/login_form.inc");
  }

?>

, '$_POST[fusername]' ! <strong>Probeerd u het nog eens?</strong><br>";
//set a cookie

//E-mailadres onthouden indien het wachtwoord niet juist is, wachtwoord blijft leeg!
if(isset($_POST['wo'])) // wo is voor het opslaan van de checkbox wachtwoord opslaan
{
$logname= mysql_real_escape_string($_POST['fusername']);
$checkboxchecked = 'checked = "checked"';

}
else
{
$logname= mysql_real_escape_string($_POST['fusername']);
$password='';
}

include("../s4yincludes/login_form.inc");
}
}
elseif ($num == 0) // login naam NIET gevonden!
{
$message = "Het e-mailadres, <strong>'$_POST[fusername]'</strong> wat u heeft ingetypt <strong>bestaat niet! </strong>Probeerd u het nog eens?<br>";

//E-mailadres onthouden indien het wachtwoord niet juist is, wachtwoord blijft leeg!
if(isset($_POST['wo'])) // wo is voor het opslaan van de checkbox wachtwoord opslaan
{
$logname= mysql_real_escape_string($_POST['fusername']);

}
else
{
$logname= mysql_real_escape_string($_POST['fusername']);
$password='';
}


include("../s4yincludes/login_form.inc");
}
break;



default:
include("../s4yincludes/login_form.inc");
}
?>
Gewijzigd op 03/01/2012 17:16:43 door Michiel v
 
PHP hulp

PHP hulp

23/04/2024 17:15:17
 
Chris -

Chris -

03/01/2012 16:42:00
Quote Anchor link
Kort antwoord, nee. Je eerste query bovenaan, gebruikt een onveilige POST variabele.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
     $sql
= "SELECT eMailaddress, password  FROM useraccount
             WHERE eMailaddress ='$_POST[fusername]'"
;
?>
 
Jens erd

Jens erd

03/01/2012 16:42:51
Quote Anchor link
Plaats je code tussen [code] tags. verder;
- variabelen buiten quotes.
- Gebruik mysql_real_escape_string() om $_GET, $_POST etc heen
- wat doet regel 6 daar?
 
Erwin H

Erwin H

03/01/2012 16:44:03
Quote Anchor link
Het begint meteen al vreemd. Je gebruikt eerst $_POST['fusername'] in je query, dan bescherm je het met mysql_real_escape_string om het daarmee in je SESSION array te zetten. Dat lijkt me niet helemaal correct. Die beveiliging wil je juist gebruiken voor je de data in een query gebruikt.
 
Michiel v

michiel v

03/01/2012 16:51:44
Quote Anchor link
Moet ik dan voor mijn query zoiets gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
        $sql
= "
            SELECT id
            FROM members
            WHERE username = '"
. mysql_real_escape_string ($username) . "'
            AND password = SHA1('"
. mysql_real_escape_string ($password) . "')
            "
;

?>
 
Wouter J

Wouter J

03/01/2012 16:56:34
Quote Anchor link
Jens erd:
- Gebruik mysql_real_escape_string() om $_GET, $_POST etc heen

Om alle variabelen heen die een string zijn, niet alleen $_GET en $_POST. Leuk dat je veel zelfvertrouwen hebt, maar controleer ook altijd wat jij in de query voor variabelen stopt!

@ Michiel, haal regel 5 even weg en zet over code tags omheen. Dan wordt het wat leesbaarder.
Verder:
- Variabele buiten quotes, het zijn variabele en geen strings: operators.string
- Geen or die gebruiken, handel fouten netjes af: Voorbeeld.
- Regel 28 en 29 en alle andere regels, onnodig variabele kopiëren. Gebruik gewoon de $_POST variabelen, eventueel met functie, in je script en ga niet extra geheugen verspillen.

Van beveiliging van user scripts heb ik geen verstand. Dus dat laat ik aan die professionals over. (om commentaar erop te geven)
Gewijzigd op 03/01/2012 16:56:56 door Wouter J
 
- Ariën  -
Beheerder

- Ariën -

03/01/2012 17:27:46
Quote Anchor link
Waarom plaats je wachtwoorden in een cookie?
 
Michiel v

michiel v

03/01/2012 17:34:14
Quote Anchor link
Dat is alleen indien men aanvinkt om de wachtwoorden te onthouden.
 
Chris -

Chris -

03/01/2012 17:59:01
Quote Anchor link
Je hoort nooit, maar dan ook nooit wachtwoorden te onthouden in een cookie!
 
Remco van Akker

Remco van Akker

03/01/2012 18:05:47
Quote Anchor link
Zelf weet ik niet veel van beveiliging af.
Maar je moet nooit je wachtwoord in een cookie opslaan.
Dan kan je het beter in een session doen.
$password = $_SESSION['wachtwoord'];
 
Chris -

Chris -

03/01/2012 18:20:15
Quote Anchor link
Wáárom zou je een wachtwoord nou in een sessie of een cookie willen plaatsen? Dat wil je nooit...
 
Herman van Ree

Herman van Ree

03/01/2012 18:22:56
Quote Anchor link
Persoonlijk heb ik een browser die in een goeie bui vaak mn wachtwoorden onthoudt.
 
Michiel v

michiel v

03/01/2012 18:58:16
Quote Anchor link
Weet iemand waar ik een goed en veilig login script kan vinden, hier kan ik waarschijnlijk nog een hoop van leren?
 
Remco van Akker

Remco van Akker

03/01/2012 18:59:30
Quote Anchor link
@Chris
Ik sla mijn wachtwoorden ook niet op in een sessie of cookie.
Ik zei het alleen maar ;)
Wat moet je nou eigenlijk met een wachtwoord cookie/sessie?
Waar voor ga je die gebruiken?
 
Kris Peeters

Kris Peeters

03/01/2012 19:16:10
Quote Anchor link
Je hebt je paswoord enkel nodig op het moment dat de gebruiker inlogt.
Eens de gebruiker ingelogd is, moet jij zorgen dat je in een sessie zet dat de gebruiker als "ingelogd" mag beschouwd worden. Eventueel zet je de user name ook in een sessie variabele
Maar dat paswoord heb je verder niet meer nodig. Je moet het dus nergens bijhouden.
 



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.