Alexander (HH): DBI und Platzhalter

Beitrag lesen

Moin Moin!

Genau das, was Du der Datenbank-Karrikatur befiehlst: Sollte das Insert scheitern, weise der Spalte anz den Wert der Spalte otto zu.

Achso, ja, klar.

Jaja, Wald und Bäume ...

Genau mit so einer Aktion baut man sich scheunentorgroße Einfallstore. Deswegen immer mit Platzhaltern, selbst für Konstanten. Dazu Taint Mode in Perl (#!perl -T) und im DBI (Taint oder wenigstens TaintIn), und die gröbsten Dämlichkeiten sind abgewürgt. Dann noch vergessen, dass es *zu* leichte Wege gibt, um das Taint-Flag loszuwerden, und stattdessen immer schön alles, was reinkommt, mit einer möglichst restriktiven RegExp testen. Diverse Module auf CPAN (mit Validate bzw. Validator im Namen) helfen dabei.

Oh, und NIE versuchen, Falscheingaben zu reparieren. Damit öffnet man neue Tore.

Schreib SQL in Single Quotes bzw. q() bzw. <<'__marker__', damit kommst Du gar nicht erst in Versuchung, Variablen in den String zu interpolieren.

Ok, Single Quotes. Das Caching prepared St. lese ich nach.

prepare_cached

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".