3 Vraagjes

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Nicolas Pierre

Nicolas Pierre

28/11/2009 16:41:00
Quote Anchor link
Voor mijn webshop dati kaan het maken ben heb ik 2 vraagjes,

1. is er een mogelijkehid om rekingnummers te checken ?
2. Ik heb deze code van iemand gekregen voor een admin functie maar hier zijn enkel de eerst 2 admin , ik zou eigenlijk hier een aanpassing moeten doen dat ik kan zeggen jij , jij en jij admin
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
<?php
function controle($naam, $wachtwoord, $admin)
{

    if($admin == false)
{

$sql="SELECT KLANT_ID, Username, Password FROM Klant WHERE Username='$naam'";
}

Else
{
$sql = "SELECT KLANT_ID, Username, Password FROM Klant LIMIT 0,1";
}

$result = mysql_query($sql);
if (mysql_num_rows($result) > 0)
{

$password = mysql_result($result, 0, "Password");
$klantid = mysql_result($result, 0, "KLANT_ID");
if ($wachtwoord != $password)
{

return false;
}
else {
return $klantid;
}
}
else {
return false;
}
}

?>


Deze code heb ik van een vriend gekregen , ik zie nergens waar hij de $admin op true zet en hij pakt enkel de eerste ID in de DB als admin maar ik moet er meerdere hebben maar hoe ik er moet aan beginnen is mij een raadsel .

3. Met diezelfde admin functie zou ik in het menu moeten hebben dat je de link naar admin enkel kan zien als $admin = true; . heb wat al geprobeerd en zover kom ik uit op errors
Gewijzigd op 01/01/1970 01:00:00 door Nicolas Pierre
 
PHP hulp

PHP hulp

03/05/2024 00:33:27
 
- SanThe -

- SanThe -

28/11/2009 16:53:00
Quote Anchor link
Bovenstaande code is zo te zien niet echt veilig. Het is technisch mogelijk dat iedereen een admin is.

Edit: En op regel 3 mist een $.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
Nicolas Pierre

Nicolas Pierre

28/11/2009 16:58:00
Quote Anchor link
Hoe bedoel je SAn ?
 
SilverWolf NL

SilverWolf NL

28/11/2009 17:00:00
Quote Anchor link
1) je script is nu bijna niet leesbaar. Zet je het even tussen de php-tags? Ook de opmaak kan beter, ik zie niet meteen welke if/else loops waarin horen
2) admin is nu een constante, gebruikt hij ergens define om hem te definieren?
3) ik zie nergens mysql_real_escape_string();, sql injectie is nu mogelijk...
4) de wachtwoorden staan als plain/text opgeslagen, dus iedereen die je database hacked kan zo inloggen, gebruik het liefst iets als md5() hiervoor.
5) in de eerste sql staat een variable ($naam), deze moet je buiten de haakjes halen en aan elkaar 'lijmen' met een . :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?PHP
$sql
="bla".$naam."bla";
?>


Over je eerste vraag: wat wil je met die rekeningnummers? wil je dat iemand niet aobiwwihje242 kan invullen, of wil je kijken of hij bestaat? dit laatste lijkt me vrij lastig, als je betalingen wilt doen kan je beter iets als iDeal of Paypal op je site zetten. Ook is het niet heel veilig om rekeningnummers enzo op te slaan in een database.
Om meerdere admins te krijgen, zul je moeten weten waar die admin vandaan komt, en waar hij gedefinieerd is, hetzelfde geld voor je menu: als admin een constante is, kan je hem niet aanroepen met $admin. Ook moet je voor een vergelijking if($admin==true) hebben.

Ik zou dit eerst even verbeteren, en dan kunnen we je verder helpen (als je natuurlijk weet waar admin vandaan komt ;) )
 
- SanThe -

- SanThe -

28/11/2009 17:05:00
Quote Anchor link
Als $admin true is ga je deze query uitboeren.
$sql = "SELECT KLANT_ID, Username, Password FROM Klant LIMIT 0,1";
En die query haalt iedereen op ongesorteerd en daar pak je het eerste resultaat van. Dat kan dus iedereen zijn.
 
Nicolas Pierre

Nicolas Pierre

28/11/2009 17:06:00
Quote Anchor link
wachtwoorden worden md5 in aanmelding

Waarom doe je dat bij puntje 5 ?

En jah rekeningnummersnakijken dat ze teminste niet kunnen in duwen bv : phphulp.nl bij rekening nummer

Admin moet toch nergens gedefineerd worden(of ben ik mis ?) , ik maak toch een functie aan waar hij de constante gaat aanmaken en daar een waarde gaat aan geven bij de sessie van de persoon die inlogt ?

En de injectie : ben eerste jaars dus ben nog leek

Hazo san ma hij gaat toch ID 0 of 1 nemen als ik me niet vergis ?

Edit
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
<?php
function controle($naam, $wachtwoord, $admin) {

        if ($admin == false) {

            $sql = "SELECT KLANT_ID, Username, Password FROM Klant WHERE Username='$naam'";

        }
else { // admin nodig? Haal eerste record op

            $sql = "SELECT KLANT_ID, Username, Password FROM Klant LIMIT 0,1";

        }


        $result = mysql_query($sql);

        if (mysql_num_rows($result) > 0) {
            $password = mysql_result($result, 0, "Password");
            $klantid = mysql_result($result, 0, "KLANT_ID");

            if ($wachtwoord != $password) {
                return false;
            }
else {
                return $klantid;
            }
        }
else {
            return false;
        }

}


    // Check naam en wachtwoord

if (isset($_POST['verzonden'])) {

        $username = $_POST['username'];
        $wachtwoord = md5($_POST['wachtwoord']);

        $klantid = controle($username, $wachtwoord, $admin);

        if ($klantid != false) {
        // Correct

            $_SESSION['username'] = $username;
            $_SESSION['wachtwoord'] = $wachtwoord;
            $_SESSION['klantid'] = $klantid;

        }

}


if (controle($_SESSION['username'], $_SESSION['wachtwoord'], $admin) == false) {

    echo "<form method=\"post\" action=\"".$_SERVER["PHP_SELF"]."?";
    reset($_GET); // Zet de array pointer op 0, begin bij het begin
    // Stuur meegestuurd variabelen opnieuw mee.

    while($getvar = each($_GET)) {
        $varnaam = $getvar['key'];
        $varinhoud = $getvar['value'];
        echo "$varnaam=$varinhoud&";
    }

    echo "\">\n";
    echo "Naam: ";
    echo "<input type=\"text\" name=\"username\">";
    echo "<br>";
    echo "Wachtwoord: ";
    echo "<input type=\"password\" name=\"wachtwoord\">";
    echo "<br>";
    echo "<input type=\"submit\" value=\"verzenden\" name=\"verzonden\">";
    echo "</form>";

    echo "<p>Nog niet geregistreerd? <a href=\"aanmeldformulier.php\">[Registreer hier]</a><br>";

    if ($admin == "true") {
        echo "<p>--- Admin status is vereist!";
    }


    exit;

}


?>


Weet niet of hier meer mee bent maar dit heb ik al als een authenticatie script , waar hij de login gaat checken + de admin dan
Gewijzigd op 01/01/1970 01:00:00 door Nicolas Pierre
 
- SanThe -

- SanThe -

28/11/2009 17:25:00
Quote Anchor link
Ik zie nog steeds niet waar die $admin vandaan komt.

Zet dit bovenin je script.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

// rest
?>
 
Wim E

Wim E

28/11/2009 17:55:00
Quote Anchor link
Ik zou eventueel aanraden om op userid te zoeken en niet op username. Deze kun je in je query escapen door (int) voor je variable te zetten
 
Nicolas Pierre

Nicolas Pierre

28/11/2009 18:55:00
Quote Anchor link
SanThe : is gemaakt met Eclipse dus fouten zitten er niet in
 
Joris van Rijn

Joris van Rijn

28/11/2009 21:41:00
 
- SanThe -

- SanThe -

28/11/2009 22:07:00
Quote Anchor link
Nicolas schreef op 28.11.2009 18:55:
SanThe : is gemaakt met Eclipse dus fouten zitten er niet in

Leuke opmerking.
Moet dan wel een goddelijk iets zijn dat Eclipse.
 



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.