• 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

  • Op zoek naar de legends

    Syntax 5 januari 2026 om 13:50
  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 4 januari 2026 om 10:58
  • Developer Gezocht

    K.Rens 30 december 2025 om 12:32
  • [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

  • 321 Nieuwe Domeinnamen December 2025

    shiga 1 januari 2026 om 10:26
  • Meerdere mafia game template te koop

    Syntax 28 december 2025 om 21:20
  • Van een pixelige afbeelding naar een strakke, moderne website

    Syntax 21 december 2025 om 17:05

hulp gezocht voor beveiligen tegen sql injection

  • zigzag
  • 13 december 2013 om 19:30
  • zigzag
    Intermediate
    Ontvangen Reacties
    1
    Berichten
    151
    • 13 december 2013 om 19:30
    • #1

    hallo ik had graag dit stukje willen beveiligen tegen sql injection maar ik kom er ni uit wat of waar ik alles moet zetten

    PHP
    $dbres = mysql_query("SELECT login,actief FROM `users` WHERE `login`='{$_POST['login']}' AND `pass`=MD5('{$_POST['pass']}')");
    $info  = mysql_fetch_object($dbres);$db1 = mysql_query("SELECT login FROM `users` WHERE login = '{$_POST['login']}' and actief = 0");
    $db2 = mysql_query("SELECT login FROM `users` WHERE login = '{$_POST['login']}'");
    $db3 = mysql_query("SELECT login FROM `users` WHERE login = '{$_POST['login']}' AND `pass`=MD5('{$_POST['pass']}')");if(mysql_num_rows($db1) > 0 ){
    if(mysql_num_rows($dbinlog) == 0 ){
    mysql_query("INSERT INTO inlogsysteem (`tijd`,`ip`,`aantal`) values(NOW(),'{$_SERVER['REMOTE_ADDR']}','1')");
    $pogingen = 2;
    }
    elseif($infoinlog->aantal == 1){
    mysql_query("UPDATE inlogsysteem SET `aantal`=`aantal` +'1' WHERE `ip` = '{$_SERVER['REMOTE_ADDR']}'");
    $pogingen = 1;
    }
    elseif($infoinlog->aantal == 2){
    mysql_query("UPDATE inlogsysteem SET `aantal`=`aantal` +'1' WHERE `ip` = '{$_SERVER['REMOTE_ADDR']}'");
    $pogingen = 0;
    }
    Toon Meer
  • Tim
    Enlightened
    Ontvangen Reacties
    77
    Berichten
    3.686
    • 13 december 2013 om 19:47
    • #2

    Hallo,

    Gebruik maken van prepared statements (Google even wat het is) en je bent veilig ;)

    Mvg,
    Tim

    Master student IT-recht en Master student Ondernemingsrecht & software ingenieur
    My Personal profile
    My professional profile (LinkedIn/CV)

  • zigzag
    Intermediate
    Ontvangen Reacties
    1
    Berichten
    151
    • 13 december 2013 om 20:11
    • #3

    moet je dan dit google prepared statements php of sql injection er zijn zo veel dingen maar daar ken ik niks van da trekt allemaal op elkaar en dan weet ik nog niet of ik het goed heb gedaan

    kan je niks in .httacces zetten voor alles te beveiligen
    alleen weet ik niet wat

  • Cas
    Imexa
    Ontvangen Reacties
    5
    Berichten
    1.471
    • 13 december 2013 om 20:23
    • #4

    Was het maar zo makkelijk! Je zal je script op een andere manier moeten opbouwen, als je even op Google kijkt kun je hele bruikbare informatie vinden zoals: http://www.wikihow.com/Prevent-SQL-Injection-in-PHP

    Vergeet dan ook niet de volgende documentatie te lezen:
    - http://www.php.net/mysqli
    - http://www.php.net/pdo.prepared-statements

    Grafisch en interactief ontwerper & Wordpress specialist

  • rickvbeek
    Ict allrounder
    Ontvangen Reacties
    5
    Berichten
    500
    • 13 december 2013 om 21:05
    • #5

    Beste ,

    Je kan ook gebruik maken van
    http://php.net/manual/en/func…cape-string.php.

  • Cas
    Imexa
    Ontvangen Reacties
    5
    Berichten
    1.471
    • 13 december 2013 om 21:15
    • #6
    Citaat van rickvbeek

    Beste ,

    Je kan ook gebruik maken van
    http://php.net/manual/en/func…cape-string.php.

    Er staat letterlijk bovenaan:

    "Warning: This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include: mysqli_real_escape_string() PDO::quote()"

    Dit betekend dat als je dit nu gebruikt in een script, het binnen een aantal PHP versies niet meer zal worden ondersteund. Het word dus sterk afgeraden om deze extentie op dit moment nog te gebruiken.

    Grafisch en interactief ontwerper & Wordpress specialist

  • rickvbeek
    Ict allrounder
    Ontvangen Reacties
    5
    Berichten
    500
    • 13 december 2013 om 21:25
    • #7
    Citaat van Cas

    Er staat letterlijk bovenaan:

    "Warning: This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include: mysqli_real_escape_string() PDO::quote()"

    Dit betekend dat als je dit nu gebruikt in een script, het binnen een aantal PHP versies niet meer zal worden ondersteund. Het word dus sterk afgeraden om deze extentie op dit moment nog te gebruiken.


    "Bedankt cas had ik inderdaad niet gezien "
    Maar als je hier boven kijkt naar de code zien je dat hij veelvuldig gebruik maakt van mysql_query die gelijk tijdig er uit gaat.
    Het is natuurlijk niet de beste manier die ik heb gegeven maar het is wel een manier om het doen.

    Ik zal me daarom even aanvullen.
    Mysql_query gaat in php 6 verdwijnen als je script wil die nog jaren mee kan dan zal je het geheel moeten veranderen.

    Je kan hier voor
    http://www.php.net/manual/en/mysqli.query.php gebruiken
    of
    http://www.php.net/class.pdo

    Met vriendelijke groet,
    rick van beek

  • Tim
    Enlightened
    Ontvangen Reacties
    77
    Berichten
    3.686
    • 13 december 2013 om 21:31
    • #8

    Hallo,

    mysql_real_escape_string is niet veilig genoeg :)

    Mvg,
    Tim

    Master student IT-recht en Master student Ondernemingsrecht & software ingenieur
    My Personal profile
    My professional profile (LinkedIn/CV)

  • thjeu
    Developer
    Ontvangen Reacties
    2
    Berichten
    501
    • 13 december 2013 om 21:31
    • #9

    Inderdaad zoals rick al aangeeft, PDO. Hier hoef je je namelijk al een stuk minder druk te maken over sql injections etc. aangezien dit standaard in PDO zit. Dus wanneer je denk dat het echt nodig is om jezelf te leren hoe iets goed te beveiligen, zal ik je zeker aanraden om te kijken naar PDO.

    Het is natuurlijk altijd nodig om het goed te beveiligen, maar ik zelf acht een goede basiskennis in PHP belangrijker. Naarmate je basiskennis goed is, zul je PDO ook een stuk makkelijker begrijpen.

    TwistedMonkey - Media Productions

  • Reza
    Professional
    Ontvangen Reacties
    13
    Berichten
    1.536
    • 13 december 2013 om 22:12
    • #10

    Indien je, nog door wilt gaan met het gebruiken van MySQL, dan zou ik de functie mysql_real_escape_string() samen met de trim() functie gebruiken.
    Als voorbeeld:

    PHP
    mysql_real_escape_string(trim($_POST['login']))


    http://www.php.net/trim
    http://www.php.net/manual/en/func…cape-string.php

    Wat ik zelf en andere aanraden is om bijvoorbeeld over te stappen naar de prepared statement van bijvoorbeeld MySQLI.
    Als voorbeeld in jouw geval ongeveer:

    PHP
    <?php
    //Het mist nog een groot stuk, gebruik hiervan maken kan dus niet.
    $stringLogin  = trim($_POST['login']);
    
    
    if($stmt = $mysqli->prepare("SELECT login,actief FROM users WHERE login=?")) 
    {
        $stmt->bind_param("s", $stringLogin);
        $stmt->execute();
        $stmt->close();
    }
    ?>
    Toon Meer

    Bij PDO gebruik ik zelf de prepared statement met arrays:

    PHP
    <?php
    $stringCode = 'Hulp';
    $stringUrl  = 'http://icts.nl';
    
    
    					//We gaan nu verder en importeren het in de database.
                        $stmt = $db->prepare(" INSERT INTO hulp(code, redirect) VALUES (?, ?) ");
    					//In PDO is er geen real_escape_string maar de quote() functie, als je deze zonder de substr() fucntie gebruikt wordt er bijv. in de DB enkele single quotes gezet rondom de info.
    					$stmt->execute(array(substr($db->quote($stringCode), 1, -1), substr($db->quote($stringUrl), 1, -1)));
    ?>

    Met vriendelijke groet,
    Reza.

  • Stefan.J
    Master
    Ontvangen Reacties
    9
    Berichten
    2.358
    • 14 december 2013 om 14:44
    • #11
    Citaat


    Hallo,

    mysql_real_escape_string is niet veilig genoeg :)

    Mvg,
    Tim

    Toelichting?

    De mysql-extensie is inderdaad deprecated en wordt vervangen met mysqli. In nieuwe ontwikkeling is het dus sterk aangeraden de tevens betere mysqli of PDO extensie te nemen.

  • Tim
    Enlightened
    Ontvangen Reacties
    77
    Berichten
    3.686
    • 14 december 2013 om 16:04
    • #12

    Hallo,

    Stefan, exacte reden heb ik niet meer onthouden. Was dacht ik iets dat je alsnog wat met backslash of anders de gewone slash kon doen.

    Heb niet onthouden waarom niet veilig. Enkel hoe je het wel veilig doet, namelijk prepared statements. Dat is voor bijna elke taal ook beschikbaar.

    Mvg,
    Tim

    Master student IT-recht en Master student Ondernemingsrecht & software ingenieur
    My Personal profile
    My professional profile (LinkedIn/CV)

  • zigzag
    Intermediate
    Ontvangen Reacties
    1
    Berichten
    151
    • 15 december 2013 om 11:34
    • #13

    ik kan beter een ander login systeem zoeken
    weet iemand waar ik dit kan vinden met aanmelden activatie login pasvergeten of heeft er iemand eentje liggen voor een degelijke prijs betaling via tel

  • M.Beers
    Elite members
    Ontvangen Reacties
    31
    Berichten
    460
    • 16 december 2013 om 16:08
    • #14
    Citaat van Stefan.J

    Toelichting?

    De mysql-extensie is inderdaad deprecated en wordt vervangen met mysqli. In nieuwe ontwikkeling is het dus sterk aangeraden de tevens betere mysqli of PDO extensie te nemen.

    Deze functie is niet veilig omdat je wat Tim al zegt te maken hebt met backslashes, maar dit is niet de enige reden. Het is in mysql_real_escape_string gewoon toegestaan om nummerieken te gebruiken hierdoor kan je alsnog injecteren.

    Voorbeeld van één injectie:

    PHP
    <?php
    $id = "0; DELETE FROM users";
    $id = mysql_real_escape_string($id);
    
    
    var_dump($id);
    ?>

    Dit was mijn spreekbeurt, zijn er nog vragen?

  • Stefan.J
    Master
    Ontvangen Reacties
    9
    Berichten
    2.358
    • 16 december 2013 om 22:31
    • #15

    Dat klopt, maar dat heeft niets met de escape functie te maken, maar met je gebruik ervan. Zolang je het resultaat van de escape functie in je query tussen quotes zet is er niets aan de hand.

    Je zou dus kunnen stellen dat prepared statements meer idiot proof zijn. Maar zoals de bekende uitspraak luidt:

    "If you make something idiot proof, someone will just make a better idiot."

  • zigzag
    Intermediate
    Ontvangen Reacties
    1
    Berichten
    151
    • 17 december 2013 om 00:09
    • #16

    Dit topic mag dicht ik ben goed geholpen door tredgy

    :thumbup:

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