Sven Rautenberg: Geschweifte Klammern um Variable bei MYSQL-Query-Abfragen

Beitrag lesen

Moin!

Wow Sven, das ist prima, reicht das denn aus, um sich gegen SQL-INJECTIONEN zu schützen?

$sql = "SELECT * FROM meintable WHERE name='".mysql_real_escape_string($varname)."'";

Ja, das betrachte ich als ausreichend - und die restliche Fachwelt wohl auch.

Faustregel ist:
1. Alle Strings, die aus Variablen kommen und in SQL gehen sollen, immer escapen - egal wie sicher man ist, dass da nur ungefährliche Texte drin stehen werden.

2. Auch Zahlenwerte immer in Anführungsstriche schreiben und escapen. MySQL muss die Zahl sowieso wieder parsen, weil sie ja als String übergeben wird.

Die Alternative zu 2. wäre, aus der Variablen den Zahlenwert rauszuparsen (in PHP z.B. mit intval()) - das bringt eigentlich aber keinen Vorteil, eher einen Nachteil, weil plötzlich Variablen auf zwei unterschiedliche Arten behandelt werden, obwohl das nicht notwendig ist.

- Sven Rautenberg

--
"Love your nation - respect the others."