#

Vorsicht vor PreparedStatements mit LIKE

Gerade erlebt: Man sendet seine Datenbankabfragen per PreparedStatement, damit auch alles performant läuft, da die PreparedStatements schön gecacht werden können und auch davor bewahren, allzu einfach Opfer von SQL-Injections zu werden.
Doch Vorsicht! Benutzt man LIKE Statements und davon mehrere über mehrere Tabellen, so kann der Queryoptimizer einiger Datenbanken (,u. a. bei Oracle beobachtet,) beim vorkompilieren des Statements nicht genau beurteilen, wo und wie die Platzhalter im Statement stehen werden.
Die Folge kann dabei sein, das solche Abfragen zu Fulltablescanns führen und daher alles verlangsamen. In solchen Fällen sollte man sein SQL dynamisch aufbauen. Doch auch hier Vorsicht: Denn ein einfaches

LIKE username = '"+username+"'

eröffnet SQL-Injections alle Türen. Hiergegen hilft lediglich das Validieren und Prüfen der Benutzereingabe.

Tags:, , , ,

Leave a Reply »»

Note: All comments are manually approved to avoid spam. So if your comment doesn't appear immediately, that's ok. Have patience, it can take some days until I have the time to approve my comments.