• Inloggen
  • Registreer
  • Zoeken
Dit topic
  • Overal
  • Dit topic
  • Dit forum
  • Artikelen
  • Pagina's
  • Forum
  • Downloads
  • Meer opties

ICTscripters

Dé plek voor IT

Dé plek voor IT

Aanmelden

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  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
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  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
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  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
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • [Beta] Ottomaan: gratis browserspel met een echte, levende stad. Feedback gezocht!

    frio 27 oktober 2026 om 12:22
  • Port Father: beta van een browsergame in Antwerpen 1931, feedback welkom

    Jeroen.G 26 oktober 2026 om 10:33
  • Maffia Hotel: een browsergame waarin je van lobbygast naar spil van het hotel groeit

    eeyk 22 oktober 2026 om 18:43
  • Crime Club volledig herschreven vanaf nul

    frio 19 oktober 2026 om 23:57
  • Malavita (nieuwe maffia game, van 0)

    jos 19 oktober 2026 om 23:18
  • Herkent deze Notion-structuurscan echte problemen?

    Jeroen.G 19 oktober 2026 om 15:09
  • 🚀 WE ZOEKEN TESTERS! 🚀

    Servertjee 3 oktober 2026 om 10:56
  • Luchtvaartsoftware: Hoe technologie de moderne luchtvaart verandert

    saggy2829 30 september 2026 om 19:31

Marktplaats

  • [Verkoop] G4G (Gangsters 4 Gangsters): volledige broncode, nieuw gebouwd in PHP 8.3 | € 30 per domein

    frio 27 oktober 2026 om 18:54
  • [TE KOOP] Malavita.be [Maffiaspel, gebaseerd op omicidio.nl, unieke code]

    Dpm_x 26 oktober 2026 om 00:22
  • TK: Kraai.eu

    frio 25 oktober 2026 om 11:39

hulp gezocht voor beveiligen tegen sql injection

  • zigzag
  • 13 december 2013 om 19:30
  • zigzag
    Gevorderd
    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;
    }
    Meer tonen
  • Gast, wil je besparen op je domeinnamen? (ad)
  • Tim
    Expert
    Berichten
    3.684
    • 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
    Gevorderd
    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
    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
    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
    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
    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
    Expert
    Berichten
    3.684
    • 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
    Berichten
    500
    • 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
    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();
    }
    ?>
    Meer tonen

    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
    Meester
    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
    Expert
    Berichten
    3.684
    • 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
    Gevorderd
    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
    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
    Meester
    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
    Gevorderd
    Berichten
    151
    • 17 december 2013 om 00:09
    • #16

    Dit topic mag dicht ik ben goed geholpen door tredgy

    :thumbup:

Registratie

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

Nu registreren Aanmelden

ICT Nieuws

  • PHP waarschuwt voor twee ernstige bugs die makkelijk uit te buiten lijken

    Aaron 22 oktober 2026 om 22:19

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. Privacyverklaring
  10. Contact
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design