Sven Rautenberg: PHP-Script mit Update funkt local, nicht auf Server

Beitrag lesen

Moin!

Das reine Update-Statement sieht so aus:
  if (!empty($id)) $query = "UPDATE Weinevents SET weinevent = '$weinevent' WHERE id = $id";

Du solltest sicherheitshalber mysql_real_escape_string() auf $weinevent anwenden (das nur nebenbei).

Nicht nur auf $weinevent, sondern grundsätzlich auf alles, was man von außen in ein SQL-Statement tut - auch $id.

MySQL stört sich auch nicht dran, wenn Feldwerte, die Zahlen darstellen sollen, in Anführungszeichen stehen - und mysql_real_escape_string() funktioniert nur, wenn der escapete String in Anführungszeichen steht.

Also Faustregel:
Alle Variablen, die man in ein SQL-Statement tut, und die möglicherweise von außen manipuliert sind, müssen immer
a) in Anführungszeichen stehen
b) durch mysql_escape_string() oder mysql_real_escape_string() behandelt werden.

Was zur Folge hat, dass man derartige Variablen nicht benutzen kann, um Dinge im SQL dynamisch einzufügen, die nicht in Anführungszeichen stehen dürfen, beispielsweise Feld- oder Tabellennamen. Hierfür muß man sich dann andere Sicherungsmaßnahmen überlegen.

- Sven Rautenberg

--
My sssignature, my preciousssss!