Easy Coding
  Forum Wiki Tagging Projekte Karte RSS
» Start
» All Recent Changes
» Wiki Suche
» Wiki Hilfe

Informationen

How To's Algorithmen

edit SideBar

Neue Wiki Eintrage finden Sie unter easy-coding.de/wiki.

PHP-MySQL-Injection

Viele Entwickler sind sich nicht bewusst, wie man sich an SQL Abfragen zu schaffen machen kann und nehmen an, dass eine SQL Abfrage ein vertrauenswürdiges Kommando ist. Das heißt, dass SQL Abfragen Zugriffskontrollen hinters Licht führen, und dadurch Standard Authentifizierungs- und Authorisationschecks umgehen können, und manchmal können SQL Abfragen sogar Zugriff zu Kommandos auf Betriebssystemebene erlauben.

Direkt SQL Command Injection ist eine Technik, mit der ein Angreifer SQL Kommandos erstellt oder existierende verändert, um versteckte Daten sichtbar zu machen, wertvolle Daten zu überschreiben, oder sogar gefährliche Kommandos auf Systemebene des Datenbank-Hosts auszuführen. Dies wird durch die Applikation erreicht, welche den Input des Benutzers mit statischen Parametern kombiniert, um eine SQL Abfrage zu erstellen. Die folgenden Beispiele basieren - leider - auf wahren Begebenheiten.

SQL-Injektion bezeichnet das Ausnutzen einer Sicherheitslücke in Zusammenhang mit SQL-Datenbanken. Diese entsteht bei mangelnder Maskierung oder Überprüfung von Funktionszeichen. Der Angreifer versucht über die Anwendung, die den Zugriff auf die Datenbank bereitstellt, eigene Datenbankbefehle einzuschleusen. Sein Ziel ist es dabei, Kontrolle über die Datenbank oder den Server zu erhalten.

Allgemeine Tipps

  • Zahlen erzwingen, wo Zahlen verlangt sind
    $limit = intval($limit);
    $komma = floatval($komma);
  • if/else bei entweder/oder Variablen
    $g_sortby = $_GET['sortby'] == 'ASC' ? 'ASC' : 'DESC';
    (Schreibweise siehe Trinitäts-Operator?)

PHP 4 spezifisch

  • Zeichen escapen mit mysql_real_escape_string
    $str = mysql_real_escape_string($str);

PHP 5 spezifisch

  • Benutzung der MySQLI Extension
    $stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
    $stmt->bind_param('sssd', $code, $language, $official, $percent);

Weblinks

Zuletzt geändert am 19.09.2007 09:19 Uhr
  Impressum