SQL-Injection und was wir tun können

Mischa Sameli, Geschäftsführer & Leiter Entwicklung

Web-Formulare sind immer ein gefundenes Fressen für Hacker und andere ungebetene Gäste. Denn oft ist es ein leichtes, über solche Formulare ganze Datenbanken zu löschen oder einfach nur Passwörter herauszufinden. Sowas nennt man dann SQL-Injection. Da zu gibt es richtige Abhandlungen. Eine einfach verständliche (obwohl in englisch) habe ich heute bei Steve Friedl entdeckt.

Nun gut, man weiss also, wie man vorgehen kann, um Schaden zuzufügen. Aber wie können wir unsere Applikationen schützen? Im Gegensatz zu anderen Web-Sprachen haben wirs mit ColdFusion wirklich komfortabel. Wir haben nämlich einen CF-Tag dafür: cfqueryparam.

1<cfquery name="GetUser" datasource="newsletter">
2    SELECT * FROM User
3    WHERE ID = <cfqueryparam value="#url.userID#" cfsqltype="cf_sql_integer">
4</cfquery >
Wenn wir wie hier den cfqueryparam verwenden, kann kein weiteres SQL-Statement über die Url mitgegeben werden, sondern wirklich nur ein numerischer Wert, eine ID. Natürlich sollte dies nicht die einzige Massnahme zur Prüfung von Werten vor der Übergabe an eine Datenbank sein. Aber es ist die einfachste, problemloseste, sehr effiziente und elegante Methode.