Uit het niets plots ingelogd als Guest?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sure Is

Sure Is

23/05/2011 14:34:11
Quote Anchor link
Hallo iedereen,
Ik heb net het vreemdste ooit meegemaakt.
Ik heb een indexpagina met het volgende:
Ben je ingelogd, dan toont die: "Hallo username".
Ingelogde users hebben ook de optie om restricted pagina's te bekijken.
Ben je niet ingelogd, dan: "Hallo, gelieve in te loggen".

Nu heb ik dit script een 6maanden geleden online gezet op een website om dit te tonen aan een paar vrienden. Alles werkte perfect.

Nu kom ik, 6 maand later, terug op die site, en staat er:
"Hallo Guest"! Ik kon ook, net zoals wanneer ik ingelogd zou zijn, de restricted pagina's bekijken.
Daarna heb ik uitgelogd, en was alles terug in orde, en heb ik die "Hallo Guest" nooit meer gezien.

Extra info: er is géén user geregistreerd met als username Guest, en in mijn script komt nergens het woord Guest voor...
Proberen inloggen met username Guest en bijvoorbeeld geen paswoord, lukt dan ook niet.

Iemand enig idee hoe dit kan? Ik weet hoe zot dit klinkt, maar het is weldegelijk echt gebeurd...

Het is vooral vervelend omdat het dan ook bij anderen kan voor komen, en die dus oningelogd de restricted pagina's kunnen bekijken...
 
PHP hulp

PHP hulp

19/04/2024 21:35:03
 
Maikel  B

Maikel B

23/05/2011 14:42:16
Quote Anchor link
Ik heb mijn glazen bol thuis laten liggen dus ik weet het ook niet.

Heb je relevante code?
En misschien een link naar de website?
 
Sure Is

Sure Is

23/05/2011 14:44:37
Quote Anchor link
Code index.php:

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

[code]<?php
include('config.php')
?>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
        <title>Members Area</title>
    </head>
    <body>
        <div class="header">
            <a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo_.png" alt="Members Area" /></a>
        </div>
        <div class="content">

<?php
//We display a welcome message, if the user is logged, we display it username
?>


Hallo<?php if(isset($_SESSION['username'])){echo ' '.htmlentities($_SESSION['username'], ENT_QUOTES, 'UTF-8');} ?>,<br />
Welkom op onze website.<br />
<br />
<?php
//Als de user ingelogd is, tonen we info:
if(isset($_SESSION['username']))
{

?>



<a href="profile.php?id=<?php echo $_SESSION['userid'] ?>">Mijn persoonlijke pagina</a><br />
<a href="somepage1.php">Restricted page1</a><br />
<a href="somepage2.php">Restricted page2</a><br />
<a href="connection.php">Logout</a>
<?php
}
else
{
//Is de user niet ingelogd, dan tonen we andere info:
?>

<a href="sign_up.php">Sign up</a><br />
<a href="connection.php">Log in</a>
<?php
}
?>

        </div>

    </body>
</html>

?>


Toevoeging op 23/05/2011 14:46:34:

Ik heb voor de duidelijkheid rond de hele code even
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php ?>
geplaatst omdat het anders te onverzichtelijk werd (dit staat dus niet in echte script).

Op de restricted pagina's wordt via deze code nagegaan of, en welke, user is ingelogd:

if(isset($_SESSION['username']))
Gewijzigd op 23/05/2011 14:48:40 door Sure Is
 
Ozzie PHP

Ozzie PHP

23/05/2011 15:09:57
Quote Anchor link
Heb je ook de code waar de username wordt geset? En wat is de url?
 
- SanThe -

- SanThe -

23/05/2011 16:51:03
Quote Anchor link
Staat superglobals op off?
 
Sure Is

Sure Is

23/05/2011 18:57:46
Quote Anchor link
@Ozzy: Bedoel je de code waar getest wordt of een login geslaagd is en in de session wordt gestopt? Dit is die code voor connection.php:


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
105
106
107
108
<?php
[code]<?php
include('config.php');
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" />
        <title>Connexion</title>
    </head>
    <body>
        <div class="header">
            <a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo_.png" alt="Members Area" /></a>
        </div>
        
<?php
    if (isset($_GET['expired'])) {
    $expired_message = "Uw sessie is afgelopen. U kan hieronder opnieuw inloggen<br />";
    }

?>


<?php
//Als user al ingelogd is, moet hij uitloggen
if(isset($_SESSION['username']))
{

    //We loggen hem uit door de username and userid sessions te deleten
    unset($_SESSION['username'], $_SESSION['userid']);
?>

<div class="message">You have successfuly been loged out.<br />
<a href="<?php echo $url_home; ?>">Home</a></div>
<?php
}
else
{
    
    //We check if the form has been sent
    if(isset($_POST['username'], $_POST['password']))
    {

        //We remove slashes depending on the configuration
        if(get_magic_quotes_gpc())
        {

            $ousername = stripslashes($_POST['username']);
            $username = mysql_real_escape_string(stripslashes($_POST['username']));
            $password = stripslashes($_POST['password']);
        }

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

        //We get the password of the user
        $req = mysql_query('select upassword, uid FROM users WHERE uuser="'.$username.'"');
        $dn = mysql_fetch_array($req);
        
        if($dn['upassword']==$password and mysql_num_rows($req)>0)
        {

            //Paswoord ok? Dan form niet tonen
            $form = false;
            //username en id saven in de session

            $_SESSION['username'] = $_POST['username'];
            $_SESSION['userid'] = $dn['uid'];
?>

<div class="message">You have successfuly been logged. You can access to your member area.<br />
<a href="<?php echo $url_home; ?>">Home</a></div>
<?php
        }
        else
        {
            //Paswoord fout
            $form = true;
            $message = 'The username or password is incorrect.';
        }
    }

    else
    {
        $form = true;
    }

    if($form)
    {

        //Message tonen
    if(isset($message))
    {

        echo '<div class="message">'.$message.'</div>';
    }


?>

<div class="content">
    <form action="connection.php" method="post">

        <?php echo $expired_message ?><br />
    Vul u ID en paswoord in a.u.b.:<br />
        <div class="center">
            <label for="username">Username</label><input type="text" name="username" id="username" value="<?php echo htmlentities($ousername, ENT_QUOTES, 'UTF-8'); ?>" /><br />
            <label for="password">Password</label><input type="password" name="password" id="password" /><br />
            <input type="submit" value="Log in" />
        </div>
    </form>
</div>
<?php
    }
}

?>

        
    </body>
</html>
?>
Gewijzigd op 23/05/2011 18:59:10 door Sure Is
 
Ozzie PHP

Ozzie PHP

23/05/2011 19:35:54
Quote Anchor link
Ik snap dit niet... zo logt ie toch iedere keer vanzelf uit?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
//Als user al ingelogd is, moet hij uitloggen
if(isset($_SESSION['username']))
{

    //We loggen hem uit door de username and userid sessions te deleten
    unset($_SESSION['username'], $_SESSION['userid']);
?>
 

24/05/2011 00:00:15
Quote Anchor link
Ja, zo logged hij iedere keer uit op het moment dat hij is ingelogged.
 
Sure Is

Sure Is

24/05/2011 00:20:44
Quote Anchor link
Dat klopt, en dat is ook de bedoeling.
Wanneer een niet-ingelogde user deze pagina bezoekt, krijgt hij een inlogscherm, na inloggen krijgt hij de melding "You have successfuly been logged. You can access to your member area.", met een linkje erbij. Hij wordt dus NIET automatisch uitgelogd meteen ofzo...
Bezoekt een ingelogde user deze pagina, dan wordt hij uitgelogd.
Deze pagina wordt dus zowel als login als logout pagina gebruikt... ik doe dit wel meer, ik denk niet dat het probleem daar zit...

Nog ideeën? Is mijn code ergens onveilig?
Bedankt al van de aanvullingen!
Gewijzigd op 24/05/2011 00:22:15 door Sure Is
 
Tom Swinkels

Tom Swinkels

24/05/2011 00:37:34
Quote Anchor link
zie je wel dat spoken bestaan.

Kun je eens een url geven waar het script nu draait? En weet je verder zeker dat het jou website was? En niemand een usname of wat dan ook voor de grap verandert?
 
Sure Is

Sure Is

24/05/2011 01:25:00
Quote Anchor link
Ik heb het script ondertussen al van die url gehaald, omdat ik dacht dat er een beveiligingslek in de code zou zitten...
Ik ben 100% zeker dat het geen grap ofzo was, het is geen openbare site, enkel ik en nog iemand wisten de url (en hij weet ook van niks), omdat het een site in opbouw was.

Extra info:
Een van de restricted pagina's laat je toe tekst te posten op die pagina (gastenboek-achtig). Het script savet die tekst, met een extra id, namelijk de id die hoort bij de user. Toen ik als "Guest" was ingelogd, heb ik een tekst gepost, en bij die tekst heeft een de userid 0 opgeslaan, maar er is uiteraard niemand met userid 0!

Op een andere restricted pagina kan je dan opvragen enkel je eigen berichten te tonen. Het script zoekt simpelweg alle berichten met extra id gelijk aan de session_id. Toen ik deze pagina bezocht, kreeg ik "user does not exists"... logisch, want het script vindt geen berichten die horen bij de ingelogde user.

Conclusie: ik leek ingelogd te zijn met id 0 en name Guest, die allebei niet bestaan en nooit bestaan hebben in de database...

Ik sta er zelf ook verstomd van...
 
Ozzie PHP

Ozzie PHP

24/05/2011 01:34:16
Quote Anchor link
was het op dat moment de 1e keer dat je de pagina bezocht sinds een half jaar? of had je even van tevoren de pagina al bezocht in een andere browser of iets dergelijks?
 
Sure Is

Sure Is

24/05/2011 02:20:46
Quote Anchor link
Het was de eerste keer in een half jaar dat ik die site bezocht. Ik bezocht hem NIET even daarvoor, ook niet met een andere browser...
 
Jarik Pruim

Jarik Pruim

24/05/2011 11:03:14
Quote Anchor link
Heb je niet nog een andere website op je server draaien waar je op ingelogd was?
 
Sure Is

Sure Is

24/05/2011 11:10:27
Quote Anchor link
Ook niet...
Ik was op dat moment wel ingelogd op de MySql-Database...
Maar dat heb ik al 100x gedaan, terwijl ik nog nooit die "Guest" te zien kreeg.
Gewijzigd op 24/05/2011 11:10:45 door Sure Is
 
Ozzie PHP

Ozzie PHP

24/05/2011 11:14:18
Quote Anchor link
Naja... als die link niet meer live staat valt er ook niks te testen. We kunnen je nu dus niet verder helpen.
 
Tom Swinkels

Tom Swinkels

24/05/2011 11:20:45
Quote Anchor link
Inderdaad, je kunt het beter even online gooien maak een goede backup van je database etc. Er kan niks vernield worden.
 



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.