vervelende fout met ww wijzigen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Leon den H

Leon den H

21/09/2011 23:24:09
Quote Anchor link
Hallo,

Ik heb een vervelende fout ontdekt in mijn script. Wanneer een gebruiker zijn/haar wachtwoord wijzigt, dan worden alle wachtwoorden gewijzigd van de leden in de DB. Bijvoorbeeld: Ik wijzig de mijne in TEST en dan wordt deze van iedereen TEST. Jullie zullen snappen dat dat natuurlijk niet de bedoeling is. Wie kan zien waar de fout is, want ik kom er zelf niet uit:

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

//wachtwoord vergeten

if($_SERVER['REQUEST_METHOD'] == 'POST'){

    $qSelect = mysql_query("SELECT email,username,id FROM users WHERE email='".mysql_real_escape_string($_POST['email'])."'");    
    
        $qResult = mysql_num_rows($qSelect);
        
        while($row = mysql_fetch_assoc($qSelect)){
            
            $username = $row['username'];
            $id = $row['id'];
            
        }

        
        if($qResult == 0  || $_POST['email'] == ''){
            
            echo'<br />Het opgegeven e-mailadres staat niet bij ons geregistreerd, probeer het nogmaals of maak een nieuw account aan.';
            
        }

        else{
            
            echo'<br />De e-mail met instructies om uw wachtwoord te wijzigen is succesvol verstuurd naar '.$_POST['email'].'.';
            
            $ontvanger = $_POST['email'];
            $onderwerp = 'Wachtwoord wijzigen';
            $bericht = 'Geachte klant,
            U heeft op www.site.com aangegeven uw wachtwoord te willen veranderen. Dit kunt u doen door naar onderstaande link te gaan, daar wordt u dan gevraagd een nieuw wachtwoord in te stellen.
            http://www.site.com/ww_instellen.php?id='
.$id.'&un='.$username.'';
            $headers = 'From: site.com' . "\r\n" .
            'Reply-To: [email protected]' . "\r\n" .
            'X-Mailer: PHP/' . phpversion();

            mail($ontvanger, $onderwerp, $bericht, $headers);
            
            mysql_query("UPDATE users SET pass_change=1 WHERE username='".$username."' AND id='".$id."'");
            
        }
    
}




?>



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

//wachtwoord opnieuw instellen

if(isset($_GET['id']) && isset($_GET['un'])){
    
    $cQuery = mysql_query("SELECT * FROM users WHERE id='".$_GET['id']."' AND username='".$_GET['un']."'");
    
        while($row = mysql_fetch_assoc($cQuery)){
            
            $username = $row['username'];
            $id = $row['id'];
            $pass_change = $row['pass_change'];
            
        }

        
            if($pass_change == 1){
                
                echo'Om uw wachtwoord te veranderen hoeft u alleen uw nieuwe wachtwoord in onderstaand formulier in te vullen en op \'wijzig\' te drukken.';
                
                echo'<br /><br /><form method="post"><center><input type="text" name="new_pass" /> <input type="submit" value="Wijzigen" /></center></form>';
                
                    if($_SERVER['REQUEST_METHOD'] == 'POST'){
                        
                        if(mysql_query("UPDATE users SET pass_change=0, password='".md5($_POST['new_pass'])."'")){
                        
                            echo'Uw wachtwoord is succesvol gewijzigd. U kunt <a href="http://www.site.com/inlog.php">hier</a> inloggen!';    
                            
                        }

                        else{
                            
                            echo'Het wijzigen van uw wachtwoord is niet gelukt. Neem contact op met de webmaster.';
                            
                        }
                        
                    }
                
            }
    
}


?>
 
PHP hulp

PHP hulp

03/03/2024 16:23:54
 
- SanThe -

- SanThe -

22/09/2011 00:37:13
Quote Anchor link
Script is lek => SQL-Injection.

Wat betreft je probleem: Er staat geen WHERE in de update query, dus logisch dat ie alle records doet.
 
Wout van der Burg

Wout van der Burg

22/09/2011 10:53:36
Quote Anchor link
In je 2e codestuk inderdaad geen WHERE statement in je UPDATE;
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if(mysql_query("UPDATE users SET pass_change=0, password='".md5($_POST['new_pass'])."' WHERE username='".$username."' AND id='".$id."'")){
                        
                            echo'Uw wachtwoord is succesvol gewijzigd. U kunt <a href="http://www.site.com/inlog.php">hier</a> inloggen!';    
                            
                        }

                        else{
                            
                            echo'Het wijzigen van uw wachtwoord is niet gelukt. Neem contact op met de webmaster.';
                            
                        }


?>
 



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.