dedlfix: SQL Abfrage funktioniert in PHP nicht!!

Beitrag lesen

Hi!

SELECT kostenstelle, bezeichnung, abteilung, inventurnummer FROM hardware_erweiterung WHERE index = 7;

Die " haben da genausowenig verloren.

Und wenn Du jetzt noch mysql_real_escape_string() verwendest, sind Deine Skripte auch gegen "SQL Injection" (Informiere Dich zu dem Stichwort!) gefeit ...

Nein! So einfach ist die Regel nun auch wieder nicht. Die Funktion hat den Bestandteil string im Namen. Eine einfache 7 ist aber kein String. Sie ist es erst dann, wenn sie in Anführungszeichen eingefasst wird.

Wenn man nicht mittels Anführungszeichen in den Stringkontext wechselt, so ist eine Behandlung, die ein Ausbrechen aus diesem Stringkontext verhindern soll, sinnfrei. Man muss nicht ausbrechen, man ist bereits draußen beziehungsweise draußen geblieben. Die Sicherheitslücke bleibt erhalten und das mit oder ohne Behandlung.

Ich hab da mal was vorbereitet: Kontextwechsel erkennen und behandeln (Vorabversion). Zum Verständnis der grundsätzlichen Problematik bitte ab der Einleitung lesen. Der angesprochene Spezialfall steht im Abschnitt Zahlen im (My)SQL-Statement zu finden.

Lo!