Vraag & Antwoord

Webprogrammeren & scripting

php/SQL Beveiliging?

7 antwoorden
  • 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
  • Wat bedoel je met "sql injections"?
  • Dingen als bij input SQL-commando's zetten, I presume?
  • 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
  • $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....
  • 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 ;
  • nee dat is niet genoeg misschien kun je mijn post lezen... :o

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.