Die Funktion db_query();
wird vom vms für die Datenbankanbindung genutzt,
insofern alle die entsprechende Funktion nutzen is es so das theoretisch die Anbindung nur in der functions.lib.php geändert werden muss um z.b. mysqli zu nutzen.
da grundsätzlich auch die vorhandenen Funktionen wie
db_connect();
und
db_close(); genutzt werden um die Datenbankverbindung aufzubauen und zu schliessen
nebenbei könnte man teoretisch die funktion auch nutzen um gegen mysql injections vorzugehen
beispielcode -> falsche nutzung
PHP-Code:
// UPDATE SQL
db_query("UPDATE `tabelle` SET `text` = '".$_POST["text"]."' WHERE id ='".$_POST["id"]."'");
beispielcode -> richtige nutzung
PHP-Code:
// UPDATE SQL
db_query("UPDATE `tabelle` SET `text` = '%s' WHERE id ='%d",$_POST["text"],$_POST["id"]);
wenn man nun davon ausgeht das
text = blablabla
id = 1'; DROP DATABASE
ist
dann lauten die schlussendlich an die Datenbank abgesendeten befehle so:
PHP-Code:
UPDATE `tabelle` SET `text` = 'blablabla' WHERE id ='1'; DROP DATABASE;
PHP-Code:
UPDATE `tabelle` SET `text` = 'blablabla' WHERE id ='1';
Bei ersterem habt Ihr Danach keine Datenbank mehr, beim zweiten ist alles in ordnung
Grund: %s -> ist ein string , %d -> Integer
und selbst in dem falle das überall nur %s genutzt wird läuft in jedem falle immer ein mysql_real_escape_string drüber.