Hello,
Hallo,
habe mal eine kurze Frage zur DB-Abfrage und Sicherheit. Ich weiß das ist ein leidiges Thema und wurde schon immer wieder behandelt aber ich denke dass es nie ausführlich genug behandelt ist...Also vorweg ich habe MySql 5.0.91
über eine URL wird eine id Nummer übergeben
bla.php?id=1
daraus wird dann eine MySql Abfrage:
select viele Felder von Tabelle where id='" . (int)$HTTP_GET_VARS['id'] ."'Was muß/ kann ich machen, damit die Abfrage sicher ist?
Man könnte doch selber eine Abfrage eingeben ala
bla.php?id=1+Union+Select+1,group_concat(lese andere Tabelle aus)Wie lässt sich sowas verhindern?
Du hast es mMn schon richtig gemacht, nur leider renovierungsbedürftig.
$HTTP_GET_VARS lässt darauf schließen, dass Du eine uralte PHP-Version verwendest als API.
$id = 0;
if (isset($_GET['id']))
{
$id = intval($_GET['id']);
$sql = "select $viele_Felder from $tabelle where id = $id";
$res = mysqli_query($con, $sql);
#....
}
Das müsste eigentlich reichen, PHP und MySQL mal als Beispiel benutzt.
Das Quoten der ID sollte überflüssig sein, da sie als Integer benutzt wird. Unter der ID==0 (als Primärschlüssel) sollte in einer Tabelle kein Eintrag möglich sein. Das ist aber eine Designsache im Model, die man tunlichst beachten sollte.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg