sql inbjection
robbert
14/12/2006 22:53:00hallo
ik heb nouw al aardig wat scriptjes gemaakt.
en ik vraag me r af wat precies sql injection is.
wiekan mij vertellen hoe het werkt.
en hoe ik me er tegen wapen.
Robbert
ik heb nouw al aardig wat scriptjes gemaakt.
en ik vraag me r af wat precies sql injection is.
wiekan mij vertellen hoe het werkt.
en hoe ik me er tegen wapen.
Robbert
PHP hulp
15/01/2025 12:39:23Voorbeeld je query is:
$sql = "SELECT * FROM members WHERE memberid = '" . $_POST['memberid'] . "'";
Als iemand nu 12 invoert (dus $_POST['memberid'] = 12) wordt dit naar de db server gezonden:
SELECT * FROM members WHERE memberid = '12'
Maar als nu iemand iets meer invult, bijvoorbeeld 12'; DELETE FROM members WHERE memberid <> ' dan krijg de db server dus dit binnen:
SELECT * FROM members WHERE memberid = '12'; DELETE FROM members WHERE memberid <>'
Twee queries dus.
$sql = "SELECT * FROM members WHERE memberid = '" . $_POST['memberid'] . "'";
Als iemand nu 12 invoert (dus $_POST['memberid'] = 12) wordt dit naar de db server gezonden:
SELECT * FROM members WHERE memberid = '12'
Maar als nu iemand iets meer invult, bijvoorbeeld 12'; DELETE FROM members WHERE memberid <> ' dan krijg de db server dus dit binnen:
SELECT * FROM members WHERE memberid = '12'; DELETE FROM members WHERE memberid <>'
Twee queries dus.
Jan Koehoorn
14/12/2006 23:00:00Heel in het kort komt het er op neer dat een user zodanige input geeft dat je query er heel anders uit gaat zien.
Stel, je hebt een query als:
SELECT username
FROM tabelnaam
WHERE username = '$_POST['username']'
en iemand vult in het formulier bij username in: jan' OR username LIKE '%
dan zou je query worden:
SELECT username
FROM tabelnaam
WHERE username = 'jan' OR username LIKE '%'
Dat soort queries wil je niet laten ontstaan. Het minste dat je kunt doen is mysql_real_escape_string over userinput halen. En als je een nummer als input verwacht, checken of de gebruiker werkelijk een nummer heeft ingevuld, bijvoorbeeld met is_numeric.
Stel, je hebt een query als:
SELECT username
FROM tabelnaam
WHERE username = '$_POST['username']'
en iemand vult in het formulier bij username in: jan' OR username LIKE '%
dan zou je query worden:
SELECT username
FROM tabelnaam
WHERE username = 'jan' OR username LIKE '%'
Dat soort queries wil je niet laten ontstaan. Het minste dat je kunt doen is mysql_real_escape_string over userinput halen. En als je een nummer als input verwacht, checken of de gebruiker werkelijk een nummer heeft ingevuld, bijvoorbeeld met is_numeric.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
robbert
14/12/2006 23:27:00Jan Koehoorn
15/12/2006 00:00:00Dit is de basis. Maar zoek gerust met Google naar tutorials erover. Er zullen gerust nog andere manieren zijn.