Version 2
17.09.2009 14:54:10
Dies ist die aktuelle Version
In PHP habe ich mir mal eine Funktion Programmiert die Get und Post Anfragen mit einer RegExp auf Sachen wie "union%20" ";" "system" und ähnliche Sachen prüft und das Abarbeiten unterbricht. Man kann das auch Webserver seitig lösen, dazu gibt es Layer 7 Firewalls wie mod_security. Aber das führt jetzt zu weit. Und das sicherste ist sowisso eine saubere Programmierung.
Man sollte auch eine Prüfung für jeden Parameter Programmieren um, Anhand einer RegExp, die Parameter auf Fehleingaben zur überprüfen (und das nicht nur Clientseitig per JS). Beispielsweise sollte der Parameter id nur Zahlen annehmen die 1-8 Stellen haben. Eine Perl oder PHP RegExp wäre "[0-9]{1,8}". In .net übernimmt Regex.IsMatch das Matchen von Strings und sollte ungefähr so gehen mit dem id Beispiel:
Regex.IsMatch (strIn,("^([0-9]{1,8})")Vergiss auch nicht deine SQL Statements abzuschliessen mit einem ";" damit man per URL nicht einfach etwas anhängen kann.