Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger

 << zurück
Linux-UNIX-Programmierung von Jürgen Wolf
Das umfassende Handbuch – 2., aktualisierte und erweiterte Auflage 2006
Buch: Linux-UNIX-Programmierung

Linux-UNIX-Programmierung
1216 S., mit CD, 49,90 Euro
Rheinwerk Computing
ISBN 3-89842-749-8
gp Kapitel A Sicherheit unter Linux
  gp A.1 Viren und Trojaner
  gp A.2 Der Superuser (su)
  gp A.3 Überlaufen von Logfiles
  gp A.4 Zugriffsrechte auf Dateien
  gp A.5 Das SUID-Bit
  gp A.6 Programme ohne Ausführrechte
  gp A.7 Buffer Overflow (Pufferüberlauf)
  gp A.8 Race Condition
  gp A.9 Temporäre Dateien
  gp A.10 chroot
  gp A.11 Umgebungsvariablen
  gp A.12 Zugriffsrechte – häufig gemachte Fehler
  gp A.13 system() und popen()
  gp A.14 Offene Filedeskriptoren
  gp A.15 Core Dump
  gp A.16 SQL Injection
  gp A.17 Filedeskriptor-Überlauf mit select()


Rheinwerk Computing

A.16 SQL Injection  toptop

Sofern Sie Anwendungen mit Datenbankzugriffe schreiben, sollten Sie sich auch gegen SQL Injection Angriffe verteidigen. Meistens handelt es sich dabei um eine Eingabe, die von einem User gemacht wird. Ein einfaches Beispiel sei mit folgendem Konstrukt gegeben:

SELECT * FROM user WHERE name="Wolf"

Hier wird davon ausgegangen, der Wert »Wolf« direkt von der Eingabe des Users (bspw. via Webinterface) gemacht wurde. Ein Angreifer könnte hier jetzt eine geschlossene »Double Quote« und ein Semikolon einfügen um so weitere Kommandos anzuhängen und auszuführen. Ein fieses Beispiel wäre:

SELECT * FROM user WHERE name="Wolf"; DROP TABLE user;

Hiermit wird die Tabelle »user« gelöscht. Die sicherste Alternative hierbei ist natürlich, erst gar keine Eingabe eines Users zu lassen. Aber es gibt eben immer »Gründe« dies trotzdem zu verwenden. In diesem Fall sollten Sie gefährliche Zeichen über ein Backslash entschärfen. Einige Datenbanken bieten mittlerweile hierzu schon Funktionen an, die das Problem entschärfen können, aber da nicht jede Datenbank eine solche Funktion anbietet, sei hierzu eine einfache Lösung des Problems an die Hand gegeben.

/* 
 *  eingabe= die Zeichenkette die geschützt (escaped) werden soll
 *  quote  = das "Quote"-Zeichen - entweder Singe Quote oder
 *           Double Quote, ansonsten wird ein Fehler 
 *           zurückgegeben
 *  wc     =  wird hier 0 angegeben, werden Wildcardzeichen 
 *            nicht "escaped".
 */
char *escape_sql(const char *eingabe, char quote, int wc) {
  char       *out, *ptr; 
  const char *c; 
  if (quote != '\'' && quote != '\"')
     return NULL; 
  /* Theoretisch könnte jedes Zeichen "escaped" werden,
   * daher wird zunächst das doppelte an Speicher reserviert */
  if (!(out = ptr = (char *)malloc(strlen(eingabe) * 2 + 2 + 1))) 
     return NULL; 
  *ptr++ = quote; 
  for (c = eingabe;  *c;  c++) { 
    switch (*c) { 
      case '\'':   /* Single Quote */
      case '\"':   /* Double Quote */
        if (quote == *c) *ptr++ = *c; 
        *ptr++ = *c; 
        break; 
      /* Wildcards */ 
      case '%':
      case '_': 
      case '[': 
      case ']': 
        if (wc) *ptr++ = '\\'; 
        *ptr++ = *c; 
        break; 
      /* Sonderzeichen - Escape-Sequenzen */
      case '\\': *ptr++ = '\\'; *ptr++ = '\\'; break; 
      case '\b': *ptr++ = '\\'; *ptr++ = 'b';  break; 
      case '\n': *ptr++ = '\\'; *ptr++ = 'n';  break; 
      case '\r': *ptr++ = '\\'; *ptr++ = 'r';  break; 
      case '\t': *ptr++ = '\\'; *ptr++ = 't';  break; 
      default: 
        *ptr++ = *c; 
        break; 
    } 
  } 
  *ptr++ = quote; 
  *ptr = '\0';      /* Terminieren */
  return out; 
}
 << zurück
  
  Zum Rheinwerk-Shop
Neuauflage: Linux-UNIX-Programmierung
Neuauflage:
Linux-UNIX-
Programmierung

bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: Linux-Server






 Linux-Server


Zum Rheinwerk-Shop: Das Komplettpaket LPIC-1 & LPIC-2






 Das Komplettpaket
 LPIC-1 & LPIC-2


Zum Rheinwerk-Shop: Linux-Hochverfügbarkeit






 Linux-
 Hochverfügbarkeit


Zum Rheinwerk-Shop: Shell-Programmierung






 Shell-
 Programmierung


Zum Rheinwerk-Shop: Linux Handbuch






 Linux Handbuch


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
Info





Copyright © Rheinwerk Verlag GmbH 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern