Beveiliging van login script en aanmeldings script.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Kris Peeters

Kris Peeters

20/01/2011 16:35:35
Quote Anchor link
Ocirina of Time op 20/01/2011 16:11:34:
Maar zoals ik hem nu als laatst heb gepost bevat hij verder geen problemen? Of beveiligings fouten?


Je hebt het over je post van 20/01/2011 14:00:23 ?


* Laat dit achterwege:

$password = mysql_real_escape_string(md5 ($_POST['password']));
Dit volstaat
$password = md5 ($_POST['password']);
md5 geeft een string terug die ongevaarlijk is voor injectie.


* $_POST['mail'] gebruik je wel nog 1 keer zonder bescherming, in de INSERT.
Ook dit escapen.
Gewijzigd op 20/01/2011 16:37:20 door Kris Peeters
 
PHP hulp

PHP hulp

29/03/2024 11:25:31
 
Ocirina Ocirina

Ocirina Ocirina

20/01/2011 16:37:54
Quote Anchor link
@kris, bedankt voor je reactie. Ik heb het aangepast zie het 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
<?php

if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of er op de knop is geklikt.
{
    include_once 'connect.php';

    if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['password']) AND !empty($_POST['passwordc']) AND !empty($_POST['mail']))
    {

        if(($_POST['password']) == ($_POST['passwordc']))
        {

            $gebruikersnaam = mysql_real_escape_string($_POST['gebruikersnaam']);
            $password       = md5 ($_POST['password']);
            $mail             = mysql_real_escape_string($_POST['mail']);
            $sql = mysql_query("SELECT gebruikersnaam AND password FROM gebruikers WHERE gebruikersnaam='". $gebruikersnaam . "' AND wachtwoord='" . $password . "'");
            
            if($sql != NULL)
            {

                mysql_query("INSERT INTO gebruikers VALUES ". $gebruikersnaam . ", " . $password . ", " . $mail . "");
                header('Refresh: 2; url=login.php');
                exit ('U bent succesvol aangemeld, u kunt nu inloggen.');
            }

            else
            {
                header('Refresh: 3; url=registreren.php');
                exit ('U bent niet aangemeld, probeer het opnieuw met een ander wachtwoord of gebruikersnaam.');
            }
    }

    else
    {
        header('Refresh: 3; url=registreren.php');
            exit ('De ingevoerde gegevens kloppen niet, u heeft het controle wachtwoord verkeerd ingevuld.');
    }

    }

    else
    {
    header('Refresh: 3; url=registreren.php');
        exit ('De ingevoerde gegevens kloppen niet, niet alles is ingevuld.');
    }
    
    

}

else
{
    header('Refresh: 2; url=registeren.php'); // Doorverwijzen met gepaste melding.
    exit ('U bent op de verkeerde pagina gekomen, U wordt doorverwezen.');
}


?>
 
Kris Peeters

Kris Peeters

20/01/2011 16:43:25
Quote Anchor link
Ik zie ook nog dat je de ' vergeet rond de strings in je insert string.

Tegen injection ben je verder wel beschermd, nu.
 
Marco Bos

Marco Bos

20/01/2011 16:47:17
Quote Anchor link
Waarom een simpele beveiliging zoals MD5, makkelijk voor een bruter bij kleine wachtwoorden, waarom niet gewoon een functie opmaken zodat je voor alles gelijk een systeem beveiliging oplossing hebt. dat is toch wel het handigste vind je niet?

Je kunt trouwens ook een cookie gebruiken of een simpele ticket zodat als je niet op schoolserver zit, gelijk bent ingelogd. of probeer een session te maken met een ticket of inlog tijd.
 

20/01/2011 16:53:41
Quote Anchor link
Ga ook een salt gebruiken.
Zie nu ook eens wat mysql_query teruggeeft.
 
Ocirina Ocirina

Ocirina Ocirina

20/01/2011 17:23:24
Quote Anchor link
Ik krijg een error:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\loginv.php on line 13

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\loginv.php:13) in C:\xampp\htdocs\loginv.php on line 20
Verkeerde gebruikersnaam of wachtwoord.

De 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
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST')        // Controle of er op de knop is gedrukt.
{
          
    if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['password']))
    {

        include_once 'connect.php';            // Connectie met database.
        $gebruikersnaam    = mysql_real_escape_string($_POST['gebruikersnaam']);
        $password        = mysql_real_escape_string(md5 ($_POST['password']));
        $sql = ("SELECT gebruikersnaam AND password FROM gebruikers WHERE gebruikersnaam='". $gebruikersnaam . "' AND wachtwoord='" . $password . "'");
        $uitvoer = mysql_query($sql);
        
        $controle = mysql_num_rows($uitvoer);
            if($controle != 0)
            {

                echo 'U bent ingelogd';
            }

            else
            {
                header('Refresh: 2; url=login.php');
                exit ('Verkeerde gebruikersnaam of wachtwoord.');        // Negatieve melding van ingevoerde gegevens.
            }            
    }

    else
    {
        header('Refresh: 2; url=login.php');
        exit ('U heeft een van de gegevens niet goed ingevuld.');        // Negatieve melding van ingevoerde gegevens.
    }  
}

else
{
    header('Refresh: 2; url=login.php'); // Negatief op de verwerk pagina gekomen, direct terug verwijzen met gepaste melding.
    exit ('U bent op de verkeerde pagina gekomen, u wordt doorverwezen.');
}

?>


Toevoeging op 20/01/2011 17:24:50:

@karl,
ik ga even uitzoeken hoe die salt werkt en het proberen in te voegen.
Bedankt allemaal nog voor jullie reacties.
 
Kris Peeters

Kris Peeters

20/01/2011 17:31:19
Quote Anchor link
Er is iets fout met de syntax van je sql string.
Daarom geeft mysql_query een false terug naar $uitvoer in plaats van een recource.


SELECT gebruikersnaam, password FROM ...

komma ipv. AND
 
Ocirina Ocirina

Ocirina Ocirina

20/01/2011 17:32:35
Quote Anchor link
Ik heb een mooie salt functie gevonden, kan ik dit gewoon met include_once gebruiken?


Toevoeging op 20/01/2011 17:37:39:

Kris Peeters op 20/01/2011 17:31:19:
Er is iets fout met de syntax van je sql string.
Daarom geeft mysql_query een false terug naar $uitvoer in plaats van een recource.


SELECT gebruikersnaam, password FROM ...

komma ipv. AND

Dankje v.d. reactie. Ik heb het aangepast, ik ga nu even werken maar hij werkt nog steeds niet. Nog steeds dezelfde error, on line 13. Warning: mysql_num_rows() expects parameter 1 to be resource
De 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
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST')        // Controle of er op de knop is gedrukt.
{
          
    if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['password']))
    {

        include_once 'connect.php';            // Connectie met database.
        $gebruikersnaam    = mysql_real_escape_string($_POST['gebruikersnaam']);
        $password        = mysql_real_escape_string(md5 ($_POST['password']));
        $sql = ("SELECT gebruikersnaam, password FROM gebruikers WHERE gebruikersnaam='". $gebruikersnaam . "' AND password='" . $password . "'");
        $uitvoer = mysql_query($sql);
        
        $controle = mysql_num_rows($uitvoer);
            if($controle != 0)
            {

                echo 'U bent ingelogd';
            }

            else
            {
                header('Refresh: 2; url=login.php');
                exit ('Verkeerde gebruikersnaam of wachtwoord.');        // Negatieve melding van ingevoerde gegevens.
            }            
    }

    else
    {
        header('Refresh: 2; url=login.php');
        exit ('U heeft een van de gegevens niet goed ingevuld.');        // Negatieve melding van ingevoerde gegevens.
    }  
}

else
{
    header('Refresh: 2; url=login.php'); // Negatief op de verwerk pagina gekomen, direct terug verwijzen met gepaste melding.
    exit ('U bent op de verkeerde pagina gekomen, u wordt doorverwezen.');
}

?>
Gewijzigd op 20/01/2011 17:41:31 door Ocirina Ocirina
 

20/01/2011 17:38:17
Quote Anchor link
Hoe moeilijk is het om mysql_query te lezen en te begrijpen?
 
Ocirina Ocirina

Ocirina Ocirina

20/01/2011 17:39:25
Quote Anchor link
Niet moeilijk, maar wat gaat daar dan fout?

@KARL bedankt! Ik moest even goed op mijn muil gaan, maar ik heb het gevonden:
ipv. password gebruikte ik wachtwoord! Erg bedankt.
Gewijzigd op 20/01/2011 17:41:01 door Ocirina Ocirina
 

20/01/2011 17:41:40
Quote Anchor link
Dat je moet lezen hoe je die moet gebruiken en wat je terug krijgt. Dus hoe je kan controleren of het goed gaat.
Er staan zelfs voorbeelden.
 
Ocirina Ocirina

Ocirina Ocirina

20/01/2011 17:43:29
Quote Anchor link
@karl,
Vind je het een bende dit script?

Toevoeging op 20/01/2011 21:40:20:

Wat vinden jullie er nu van?
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
<?php

if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of er op de knop is geklikt.
{
    include_once 'connect.php';

    if(!empty($_POST['gebruikersnaam']) AND !empty($_POST['password']) AND !empty($_POST['passwordc']) AND !empty($_POST['mail']))
    {

        if(($_POST['password']) == ($_POST['passwordc']))
        {

            
            include_once 'uwx3g.php';            // Connectie met salt page.
            $gebruikersnaam    = mysql_real_escape_string($_POST['gebruikersnaam']);
            $password        = md5(salt($_POST['password']));
            $mail            = mysql_real_escape_string($_POST['mail']);
            $datum        = date("Y.m.d");
            $sql = ("SELECT gebruikersnaam FROM gebruikers WHERE gebruikersnaam='". $gebruikersnaam . "'");
            $uitvoer = mysql_query($sql);
            
            $controle = mysql_num_rows($uitvoer);
                
            if($controle == 0)
            {

                mysql_query("INSERT INTO gebruikers (id, gebruikersnaam, password, mail, datum) VALUES ('','" . $gebruikersnaam . "', '" . $password . "', '" . $mail . "', '" . $datum . "')");
                header('Refresh: 4; url=login.php');
                exit ('U bent succesvol aangemeld, u kunt nu inloggen.');
            }

            else
            {
                header('Refresh: 2; url=registreren.php');
                exit ('Verkeerde gebruikersnaam of wachtwoord.');        // Negatieve melding van ingevoerde gegevens.
            }    
        }

        else
        {
            header('Refresh: 3; url=registreren.php');
            exit ('De ingevoerde gegevens kloppen niet, u heeft het controle wachtwoord verkeerd ingevuld.');
        }
    }

    else
    {
    header('Refresh: 3; url=registreren.php');
        exit ('De ingevoerde gegevens kloppen niet, niet alles is ingevuld.');
    }
    
    

}

else
{
    header('Refresh: 2; url=registeren.php'); // Doorverwijzen met gepaste melding.
    exit ('U bent op de verkeerde pagina gekomen, U wordt doorverwezen.');
}


?>
 

Pagina: « vorige 1 2



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.