Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Webmaster-Security Fragen zur richtigen Serverkonfiguration oder Absicherung dynamischer Scripte gehören hier hinein.

SQL Injections

Diskussion: SQL Injections im Forum Webmaster-Security, in der Kategorie Security Area; Anzeige Da musst du aber eine Menge oder sehr komplexe Regexen durchgehen, bevor du alle möglichen SQL-Injections ausschliessen kannst ohne ...

Antwort
Alt 11.10.11, 23:57   #16 (permalink)
Moderator
 
Benutzerbild von bitmuncher
 
Registriert seit: 30.09.06
bitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcore
Likes: 443
Standard

Anzeige

Da musst du aber eine Menge oder sehr komplexe Regexen durchgehen, bevor du alle möglichen SQL-Injections ausschliessen kannst ohne valide Inputs zu zerstören. Nimm z.B. einen Blog-Beitrag über SQL-Injections. Den würdest du mit dieser Vorgehensweise unleserlich machen.

Da sollte man dann doch eher die Tipps von PHP: SQL Injection - Manual befolgen und auf Funktionen wie mysql_real_escape_string() zurückgreifen. Wenn der Input irgendwo wieder ausgegeben wird, kann man auch mit htmlentities() gleich eine Umwandlung von Sonderzeichen in HTML-Code vornehmen. Ausserdem natürlich eine Typenprüfung vornehmen, wenn es um reine Integer-Werte geht, wie im eingangs erwähnten Beispiel. 'id' soll da ja offenbar eh eine Zahl sein, also sollte man auch prüfen ob 'id' wirklich eine Zahl ist. Ein String wie '-54+union+select+concat_ws(0x3a,version(),database( ),user()),2,3,4' würde dann gar nicht erst an die DB weitergereicht, weil es eindeutig keine ist.

__________________
Mein Blog - Mein Job - Diaspora

Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund.

Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+
bitmuncher ist gerade online   Mit Zitat antworten
Alt 12.10.11, 00:26   #17 (permalink)
 
Benutzerbild von Hackse
 
Registriert seit: 31.07.06
Hackse Leistung: 8086
Likes: 32
Standard

Zitat:
Zitat von bitmuncher Beitrag anzeigen
Da musst du aber eine Menge oder sehr komplexe Regexen durchgehen, bevor du alle möglichen SQL-Injections ausschliessen kannst ohne valide Inputs zu zerstören. Nimm z.B. einen Blog-Beitrag über SQL-Injections. Den würdest du mit dieser Vorgehensweise unleserlich machen.
Für Blog-Einträge und komplexere Unterfangen ist die Funktion nicht vorgesehen. Ich verwende sie lediglich im Kontext simpler Usereingaben in Editfeldern (z.B. Usernamen, Passwort, etc.) um zu prüfen, ob die eingegebenen Daten dem für ein Feld gültigem Zeichenvorrat unterliegen.

In einer meiner, ich nenne es mal "Chat-Anwendungen", müssen User einen eindeutigen Nicknamen eingeben, der zwischen 3 und 15 Zeichen und alphanumerisch sein muss. Das überprüfe ich unter Verwendung o.g. Funktion dann wiefolgt:

PHP-Code:
// user's nickname
  
case "nickname": switch (check_user_input($value315"/^[a-zA-Z0-9_-]+$/")) {
                          case -
: echo ("- Nickname too short\n<br>"); $create_db=false; break;
                          case  
: echo ("- Nickname too long\n<br>");  $create_db=false; break;
                          case  
: echo ("- Nickname invalid\n<br>");   $create_db=false; break;
                   }
                   break; 
Übersehe ich in o.g. Beispiel mögliche Schwachstellen, die ein Angreifer ausnutzen könnte?
Hackse ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Security Area » Webmaster-Security » SQL Injections
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61