Sven Rautenberg: MySql-Zugriff auf bestimmteTabellen aus bestimmten PHP-Klassen

Beitrag lesen

Moin!

Die Abfrage gibt niemals true zurück. Ich gehe mal davon aus, dass die regExp nicht stimmt.

Nein, die Regex wird dynamisch mit einer Variablen befüllt, welche "ausführbaren" Regex-Code enthält. Das ist qualitativ dasselbe, wie wenn eine Variable ausführbaren SQL-Code enthält.

Wer befüllt die SQL-Variable? Der Programmierer. Wer ist verantwortlich für fehlendes Escaping oder Nichtverwendung von Prepared Statements? Der Programmierer.

Wer befüllt die Regex-Variable? Der Programmierer. Wer ist verantwortlich für fehlerhaft formulierte Regex-Ausdrücke in der Variablen? Der Programmierer.

Du willst einen simplen Schutz gegen SQL-Injection. Wenn es den gäbe, wäre er schon lange in Datenbanken implementiert. Wenn er auf dem Client mit Leichtigkeit realisierbar wäre, wäre schon längst die Funktion "secure_mysql_query()" erfunden. Ist beides nicht der Fall, weil es keinen simplen Schutz gibt.

Der aufwendige Schutz ist, sich sein SQL-Statement programmatisch zusammenbauen zu lassen. Die dazu notwendigen SQL-Generatoren sind in ORM-Frameworks wie Doctrine oder Propel enthalten. Die willst du nicht selbst programmieren - du traust dir ja schon beim simplen Schreiben von mehrheitlich statischem SQL nicht selbst über den Weg.

- Sven Rautenberg