Login script (wat doe ik fout?)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Wouter OOP

Wouter OOP

30/07/2009 00:52:00
Quote Anchor link
Hallo allemaal,

In een oud topic heeft "ark" mijn login script verbeterd die ik toen had gemaakt: http://www.phphulp.nl/forum/showtopic.php?cat=1&id=63993&lasttopic=1

Nou heb ik deze alleen vertaald in het engels, meer niet.
Alleen, nou is mijn vraag. Hoe beveilig in mijn pagina waar ik naartoe redirect als ik ben ingelogd?
Want ik krijg het niet voor mekaar, ook niet door te googlen.
De checks doen het, het inloggen met md5 gaat goed en als het wachtwoord niet goed is word dat vermeld.

login_form:

<FORM ACTION = "login_sql.php" METHOD = "post">

Username: <INPUT TYPE = "text" NAME = "username" /><br />
Password: <INPUT TYPE = "text" NAME = "password" /><br />

<INPUT TYPE = "submit" VALUE = "Log in" />

</FORM>


login_sql

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

include 'connect_db.php';

// Check login name.
if(isset($_POST['username']) && !empty ($_POST['username']))
{

    // Check password.
    if(isset($_POST['password']) && !empty ($_POST['password']))
    {

        // Execute query.
        $Query =
        "
            SELECT
                id
            FROM
                members
            WHERE
                username = '"
.mysql_real_escape_string($_POST['username'])."'
            AND
                password = '"
.md5($_POST['password'])."'
        "
;
        // Store query.
        $Result = mysql_query($Query);
        
        // Checks the query.
        if(!$Result)
        {

        echo 'Error in query, '.$Query.'';
        }

            else
            {
            // Check if there is a result.
            if(mysql_num_rows($Result) !== 0)
            {

            // Make session.
            $Row = mysql_fetch_assoc($Result);
            
            $_SESSION['user_id'] = $Rij['id'];
            $_SESSION['user_ip'] = $_SERVER['REMOTE_ADDR'];
            
            // Redirect.
            header('location: index.php');
            
            }

            else
            {
                // No result.
                echo 'No results found in database';
            }
            }
        
    }

    else
    {
        echo 'Enter you password!';
    }
}

    else
{
        echo 'Enter your username!';
}



?>



index:

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['user_id']))
{

   header('location: login_form.php');
}

else
{
echo 'Logged in!';
}

?>
 
PHP hulp

PHP hulp

19/04/2024 20:00:15
 
Fynn

Fynn

30/07/2009 00:58:00
Quote Anchor link
Je moet session_start() bovenaan je de login pagina zetten. Anders worden de sessies niet aangemaakt.

En moet $rij niet $row worden?
 
Wouter OOP

Wouter OOP

30/07/2009 01:21:00
Quote Anchor link
Hardstikke bedankt ^^, het werkt.
Is er verder nog wat aan te merken op het script wat beter zou kunnen?
 
Fynn

Fynn

30/07/2009 01:38:00
Quote Anchor link
Geen probleem.

- Ik gebruik zelf altijd SERVER_REQUEST_METHOD = "post" ipv isset($_POST)
- Ik weet niet of je bekend met met OOP maar je kunt het beter prepared statements gebruiken in je mysql queries om sql injections en hackend tuig te voorkomen.
- Wellicht een logout link maken die wijst naar een session_destroy script.
- Wat meer security dan alleen md5? Ik gebruik zelf md5 + sha1 maar je kunt ook andere sha's gebruiken als je die geïnstalleerd hebt ( check php_info() )
- Wellicht je password's 'salten'? Zoek maar s op Google. Dit om rainbow table attacks te voorkomen, ik zou dan gaan voor een unieke 'salt' voor elk wachtwoord wat je db in gaat. Dit in combinatie met MD5 en SHA1 is redelijk secure lijkt me :)

Maar goed, het hangt ervan af hoe zwaar je db gebruikt gaat worden, hoeveel mensen het gaan gebruiken etc.

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.