• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 19 januari 2026 om 09:34
  • Developer Gezocht

    Mikevdk 10 januari 2026 om 18:57
  • Op zoek naar de legends

    Syntax 5 januari 2026 om 13:50
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04
  • Partner Gezocht om meerdere NFT Collecties op Open Sea te Plaatsen

    NFT Art Designer 1 maart 2025 om 14:08

Marktplaats

  • Verschillende domeinen

    Syntax 8 februari 2026 om 09:57
  • 350 Nieuwe Domeinnamen Januari 2026

    shiga 1 februari 2026 om 14:21
  • 321 Nieuwe Domeinnamen December 2025

    shiga 1 januari 2026 om 10:26

Functie veilig?

  • Jannick
  • 25 november 2009 om 11:15
  • Closed
  • Jannick
    nyan nyan nyan nyan
    Berichten
    1.972
    • 25 november 2009 om 11:15
    • #1

    Haihai,
    Ik heb hier een functie voor m'n website.. En ik vraag me af of ie veilig genoeg is. Het word gebruikt om geld van contant naar bank te overzetten. Ergens denk ik dat ik wat vergeten ben... Maar wat. Wat zou ik hier nog aan kunnen verbeteren? De meegegeven $id word al gecontroleerd voordat de methode word aangeroepen.

    PHP
    function cnb($hoeveel, $id)
    {
        $sql = mysql_query("SELECT contant FROM users WHERE id = '" . $id ."'");
        $fetch = mysql_fetch_assoc($sql);
        if ($fetch['contant'] < $hoeveel)
        {
            return false;
        }
        else {
            $query = mysql_query("UPDATE users SET bank = bank + $hoeveel WHERE id = '" . $id ."'") or die(mysql_error());
            if ($query)
            {
            $query2 = mysql_query("UPDATE users SET contant = contant - $hoeveel WHERE id = '" . $id ."'") or die(mysql_error());
                if($query2)
                {
                    return true;
                }
            }
            else { return false;
            }
        }
    }
    Toon Meer

    Jannick

    Edit: Iets in code gefixed :)

  • RiiCk
    ondergetekende.
    Berichten
    1.091
    • 25 november 2009 om 11:18
    • #2

    Hallo Jannick,

    Na mijn weten is die wel beveiligd genoeg. Ik neem aan dat je er boven over er onder nog wel hebt staan dat ze niet meer van de bank kunnen halen dan dat ze hebben?

    Groetjes

    EDIT:
    Ik zie dat dit er al in staat sorry, Dan lijkt die mij veilig genoeg.

    Klik hier om mijn verkoop topic te bekijken

  • Jannick
    nyan nyan nyan nyan
    Berichten
    1.972
    • 25 november 2009 om 11:20
    • #3

    Jup, in een ander script word er een variabele aangeroepen die gekoppeld staat aan deze functie. Als die true is dan krijg je dat te zien, als ie false is een melding dat je niet genoeg geld hebt.

  • Niels
    -1
    Berichten
    1.360
    • 25 november 2009 om 11:34
    • #4

    $id is niet beveiligd. Maak er (int) $id van of voer mysql escape real string uit.

    -1

  • RiiCk
    ondergetekende.
    Berichten
    1.091
    • 25 november 2009 om 11:36
    • #5
    Citaat van Niels

    $id is niet beveiligd. Maak er (int) $id van of voer mysql escape real string uit.

    Zoals jannick zegt:
    De meegegeven $id word al gecontroleerd voordat de methode word aangeroepen.

    Klik hier om mijn verkoop topic te bekijken

  • Niels
    -1
    Berichten
    1.360
    • 25 november 2009 om 11:50
    • #6

    Dan nog betweter. Waarom zou je extra controles plaatsen als het zo normaal toch echt moet gebeuren. met (int) weet je tenminste zeker dat het een integer is en geen decimaal getal.

    Tevens zie je ook niet hoe $id 'gecontroleerd' wordt wel dus hoe kun je dan een klein scriptje bekijken op veiligheid.

    -1

  • Stefan.J
    Master
    Ontvangen Reacties
    9
    Berichten
    2.358
    • 25 november 2009 om 11:50
    • #7

    $hoeveel = '0, level = 255';

    Denk daar maar eens over na. ;)

  • Jannick
    nyan nyan nyan nyan
    Berichten
    1.972
    • 25 november 2009 om 11:57
    • #8

    Heel leuk, maar voordat de functie word aangeroepen worden zowel de ID als valuta gecontroleerd of het numeriek is, anders roept ie 'm nieteens aan... Zou het beter zijn om het binnen de functie te controleren?

    Edit:
    Wat ik nu heb:

    PHP
    function cnb((int)$hoeveel, (int)$id)
    {
        if(is_numeric($hoeveel)) {
        $sql = mysql_query("SELECT contant FROM users WHERE id = '" . $id ."'");
        $fetch = mysql_fetch_assoc($sql);
        if ($fetch['contant'] < $hoeveel)
        {
            return false;
        }
        else {
            $query = mysql_query("UPDATE users SET bank = bank + $hoeveel WHERE id = '" . $id ."'") or die(mysql_error());
            if ($query)
            {
            $query2 = mysql_query("UPDATE users SET contant = contant - $hoeveel WHERE id = '" . $id ."'") or die(mysql_error());
                if($query2)
                {
                    return true;
                }
            }
            else { return false;
            }
        }
        }
    }
    Toon Meer

    het is wel dubbel nu volgens mij, maar goed...

    Edit 2: Ok, dat werkte dus niet. *zoekt verder*

  • Stefan.J
    Master
    Ontvangen Reacties
    9
    Berichten
    2.358
    • 25 november 2009 om 12:09
    • #9

    Die verantwoordelijkheid kun je beter binnen de functie leggen ja. Anders zit je als nog alles eerst te valideren, en dan de functie aan te roepen.

  • Jannick
    nyan nyan nyan nyan
    Berichten
    1.972
    • 25 november 2009 om 12:10
    • #10

    Jup, heb 't aangepast :) Die (int) hoort voor de variabelen voordat ze gebruikt worden?, dus niet in bijv. function cnb($hoeveel, $id) maar in if ($fetch['contant'] < (int)$hoeveel) ?

  • Niels
    -1
    Berichten
    1.360
    • 25 november 2009 om 12:12
    • #11
    Citaat van Jannick

    Heel leuk, maar voordat de functie word aangeroepen worden zowel de ID als valuta gecontroleerd of het numeriek is, anders roept ie 'm nieteens aan... Zou het beter zijn om het binnen de functie te controleren?

    Maar dan nog. Door een FAIL van php kan het altijd mis gaan. filter_var heeft bijvoorbeeld ook nog veel fouten waardoor bijvoorbeeld niet legitieme e-mail adressen toch als TRUE returnen.

    -1

  • Jannick
    nyan nyan nyan nyan
    Berichten
    1.972
    • 25 november 2009 om 12:15
    • #12

    De controle voor e-mailadressen is volgens mij maximaal, er komen explodes, ereg's etc in voor, maar dat terzijde. Voor de geinteresseerden, ik heb 'm hiervan gebruikt: Klik.
    Dit is het script wat ik nu heb:

    PHP
    function cnb($hoeveel, $id)
    {
        if(is_numeric($hoeveel)) {
        $sql = mysql_query("SELECT contant FROM users WHERE id = '" . $id ."'");
        $fetch = mysql_fetch_assoc($sql);
        if ($fetch['contant'] < (int)$hoeveel)
        {
            return false;
        }
        else {
            $query = mysql_query("UPDATE users SET bank = bank + $hoeveel WHERE id = '" . $id ."'") or die(mysql_error());
            if ($query)
            {
            $query2 = mysql_query("UPDATE users SET contant = contant - $hoeveel WHERE id = '" . $id ."'") or die(mysql_error());
                if($query2)
                {
                    return true;
                }
            }
            else { return false;
            }
        }
        }
    }
    Toon Meer
  • Darsstar
    Vreemd
    Berichten
    1.173
    • 25 november 2009 om 16:50
    • #13
    PHP
    function cnb($boeveel, $id)
    {
        $id      = (int) $id;
        $hoeveel = abs((int) $hoeveel);
    
    
        $query = mysql_query("UPDATE `users` SET `bank` = `bank` + ".$hoeveel.", `contant` = `contant` - ".$hoeveel." WHERE `contant` >= ".$hoeveel." AND `id` = ".$id);
        return (bool) mysql_affected_rows();
    }

    Waarom zou je PHP dingen laten controleren wanneer MySQL dit ook kan en je ook nog eens een query bespaart?

    miauw!

  • Jannick
    nyan nyan nyan nyan
    Berichten
    1.972
    • 25 november 2009 om 17:21
    • #14

    Waar staat die abs() voor?
    Nou ja, ben nog redelijk aan het leren en ben nog niet bekend met dat soort dingen :P
    Edit: $query word nergens aangeroepen... Is dat nu ook overbodig geworden?

  • Darsstar
    Vreemd
    Berichten
    1.173
    • 25 november 2009 om 17:33
    • #15

    abs() geeft de absolute waarde van een getal...
    -10 wordt 10
    10 wordt 10

    miauw!

  • Jannick
    nyan nyan nyan nyan
    Berichten
    1.972
    • 25 november 2009 om 17:37
    • #16

    Nice... Dit is nu wat ik heb:

    PHP
    function cnb($hoeveel, $id)
    {
        $id      = (int) $id;
        $hoeveel = abs((int) $hoeveel);
    
    
    mysql_query("UPDATE `users` SET `bank` = `bank` + ".$hoeveel.", `contant` = `contant` - ".$hoeveel." WHERE `contant` >= ".$hoeveel." AND `id` = ".$id);
        return (bool) mysql_affected_rows();
    }

    Typfoutje verbeterd ($boeveel). Vraag na aanleiding van je code: Zijn '-haakjes niet nodig in query's? Ik doe altijd '" . $variabele . "', en zie dat jij ze niet gebruikt. Kan je dat overal zo toepassen, en welke voorwaarden zijn er daaraan?

  • Darsstar
    Vreemd
    Berichten
    1.173
    • 25 november 2009 om 17:49
    • #17

    Om strings MOET je quotes zetten...
    Als je mysql laat rekenen en het komt een string tegen zal het deze in een integer omzetten... (volgens mij)
    Dus waarom zou je er een string van maken als mysql het daarna weer in een integer omzet...

    Het "$query = " was inderdaad niet nodig...
    Ik dacht eerst even dat ik de query aan mysql_affected_rows() moest geven, dat was niet zo, en toen was ik vergeten dat stukje ook nog wel te halen.

    miauw!

  • MrMees
    De causeur!
    Berichten
    464
    • 25 november 2009 om 18:18
    • #18

    Ik denk wel dat je nog is_numeric of ctype_digit kan gebruiken om een fout aan te geven. Dat is wel zo makkelijk voor de gebruiker!

    Net zo als met hoeveelheid > contant. Als gebruiker is het wel netjes en handig om z'n fout te laten zien.


    Correct me if I am wrong

    Rembo&amp;amp;Rembo.

    http://www.criminalspoint.com/db/artikel/317.html

  • Darsstar
    Vreemd
    Berichten
    1.173
    • 25 november 2009 om 18:37
    • #19
    Citaat van MrMees

    Ik denk wel dat je nog is_numeric of ctype_digit kan gebruiken om een fout aan te geven. Dat is wel zo makkelijk voor de gebruiker!


    Doe je mooi bij je formulier?

    Citaat van MrMees

    Net zo als met hoeveelheid > contant. Als gebruiker is het wel netjes en handig om z'n fout te laten zien.


    Doe je als cnb() FALSE returned?

    miauw!

  • MrMees
    De causeur!
    Berichten
    464
    • 25 november 2009 om 19:22
    • #20
    Citaat van Darsstar


    Doe je mooi bij je formulier?

    Met javascript of iets dergelijks?

    Rembo&amp;amp;Rembo.

    http://www.criminalspoint.com/db/artikel/317.html

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    tcbhome 28 december 2025 om 13:55
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37

Gebruikers die dit topic bekijken

  • 1 Gasten
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacy Policy
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen | Beste Zetes eid kaartlezer webshop
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design