anoniem Geplaatst: 21 december 2004 Delen Geplaatst: 21 december 2004 Goede dag heren, Kan iemand mij vertellen wat is de correcte wijze om sql injections in je querys te voorkomen? Dus wat moet je wel doen en wat moet je niet doen. Simpele Voorbeelden: select query: [code:1:da3f79dc38] $id = $_GET['id']; $sql = "select blaat from table where id = '$id'; [/code:1:da3f79dc38] insert query: [code:1:da3f79dc38] $blaat = $_POST['blaat']; $query = "INSERT INTO table (blaat) VALUES ('$blaat')"; [/code:1:da3f79dc38] Met vriendelijke Groet, Arno Quote Link naar reactie
anoniem Geplaatst: 21 december 2004 Auteur Delen Geplaatst: 21 december 2004 Wat bedoel je met "sql injections"? Quote Link naar reactie
anoniem Geplaatst: 21 december 2004 Auteur Delen Geplaatst: 21 december 2004 Dingen als bij input SQL-commando's zetten, I presume? Quote Link naar reactie
anoniem Geplaatst: 21 december 2004 Auteur Delen Geplaatst: 21 december 2004 Als je zeker bent dat iets een getal is (zoals het eerste geval) dan kun je eerst controleren op is_numeric(). Tweede geval is wat lastiger. Misschien heeft iemand anders daar een oplossing voor Quote Link naar reactie
anoniem Geplaatst: 21 december 2004 Auteur Delen Geplaatst: 21 december 2004 $id = $_GET['id']; kun je vervangen door $id = intval($_GET['id']); zodat je zeker weet dat er alleen een getal in je query terecht komt. vang dan wel fouten af door code te schrijven die specificeerd wanneer een record niet gevonden is (doordat er bijv. tekst is ingevoegd) verder kun je de quotes escapen zodat er niet uit de ' kan worden gebroken door addslashes te gebruiker om in $_POST en $_GET elke ' en " te vervangen door \' en \". deze komt (aangepast) uit de php manual (staat er tegenwoordig niet meer in) en escaped als dit nodig is (wanneer magic quotes uit staat): [code:1:9d43b99d1d] function magic_slashes($element) { return ( is_array($element) ) ? array_map("magic_slashes", $element) : addslashes($element); } set_magic_quotes_runtime(0); if (get_magic_quotes_gpc() == 0) { $_GET = array_map("magic_slashes", $_GET); $_POST = array_map("magic_slashes", $_POST); $_COOKIE = array_map("magic_slashes", $_COOKIE); } [/code:1:9d43b99d1d] zo weet je zeker dat alles is ge-escaped en er toch niet teveel slashes worden toegevoegd.... Quote Link naar reactie
anoniem Geplaatst: 22 december 2004 Auteur Delen Geplaatst: 22 december 2004 Hallo, Ik bedoel met sql injections dat er mensen van buitenaf door bv te eikelen met ?id=iets er bijvoorbeeld ?id='eigenquery van maken. Zo maken zij met de ' het bijvoorbeeld mogelijk om eigen sql erin tebouwen. Vandaar dat ik vroeg wat de beste manier is om dit soort dingen te voorkomen. Maar in principe je select query de vars in '$var' te plaatsen zou veelal genoeg moeten zijn? Want er zijn ook andere methodes, zoals $sql = "select * from table where id = " . $var . " and etc etc ; Quote Link naar reactie
anoniem Geplaatst: 22 december 2004 Auteur Delen Geplaatst: 22 december 2004 nee dat is niet genoeg misschien kun je mijn post lezen... :o Quote Link naar reactie
anoniem Geplaatst: 22 december 2004 Auteur Delen Geplaatst: 22 december 2004 ja ik zag je post :D dus addslashes zou dan dus bij mijn geval genoeg moeten zijn. ik negeerde je even omdat ik dacht dat andere mensen misschien wel input hadden :) Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen