Karsten: Karsten

Beitrag lesen

Was das Escaping angeht: Ja, das ist in jedem Fall sinnvoll, wenn es immer angewandt wird.

Ok, ich habe mich überzeugen lassen. Dann hätte ich noch eine Frage: In Tutorials werden immer nur die Benutzereingaben ecapet (oder escaped ??). Ich denke, das Escaping kann man nicht auf die gesamte Query anwenden!? Statt

$query = "UPDATE datenbank SET name='" . mysql_real_escape_string($_POST['benutzername']) . "'";

$query = mysql_real_escape_string("UPDATE datenbank SET name='" . $_POST['benutzername'] . "'");

Dann könnte man das Escaping einmal zentral in einer Funktion/ Methode notieren und die Funktion immer unescapet aufrufen

$query = "UPDATE datenbank SET name='" . $_POST['benutzername'] . "'";
db_query($query);

Ich glaube, mysql_real_escape_string() ersetzt nur stumpf die SQL-Sonderzeichen, ohne die Logik einer SQL-Anweisung parsen zu können. Im Beispiel würde wohl auch das ' von SET name=' maskiert, sehe ich das richtig? Gibt es irgendeinen Programmiertrick, wie man dennoch erreichen kann, sich das Maskieren jedes einzelnen Benutzereintrags zu ersparen und nur einmal zentral zu escapen? Ich hätte zwar noch eine Idee (die Query von einer Funktion zusammenbauen lassen und dieser die einzelnen Bestandteile der Query als Array übermitteln), aber die erscheint mir zunächst einmal zu aufwendig.