| 

.NET C# Java Javascript Exception

Antwort #A1140 zur Frage #F291: Sql Injection in .net verhindern?

Diese Antwort hat bisher 2 Versionen. Frage #F291: Sql Injection in .net verhindern? - Antwort #A1140


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.
Lord_Pinhead 391 5
Version 1
17.09.2009 14:54:10
In PHP habe ich mir mal eine Funktion Programmiert die Get und Post Abfragen mit einer RegExp auf Sachen wie "union%20" ";" "system" und ähnliche Sachen prüft und das Abarbeiten unterbricht.

Ausserdem sollte man eine Prüfung für jeden Parameter Programmieren um, Anhand einer RegExp, die Parameter auf Fehler zur überprüfen. 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:

Return 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.
Lord_Pinhead 391 5