Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2004  »  10  »  Airbag für den Webserver  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

Immer alle Eingaben prüfen

Die Gefahren, die sich aus einer löchrigen Konfiguration ergeben, werden oft ebenso falsch eingeschätzt wie der Personenkreis, vor dem sich der Admin zu schützen hat. Oft ist es beliebigen Dritten problemlos möglich, eigenen PHP-Code auf den Server zu bringen und dort auszuführen - ohne FTP-Zugang zum Webspace. Das Vertrauen in die eigenen Nutzer hat mit der eigentlichen Gefahr daher recht wenig zu tun.

Code Injection heißt die Technik, mit der Websurfer in schlecht programmierten Gästebüchern, Weblogs oder anderen Eingabefeldern präparierten PHP-Code eintragen. Überträgt die Server-Applikation den Gästebucheintrag ungeprüft als Textblock, dann führt der Server die Kommandos des Angreifers aus, sobald jemand die Gästebucheinträge abruft. Eigentlich sollte die Anwendung Eingaben als bloßen Ascii-Text ausgegeben. Angreifer umgehen dies, indem ihr eingefügter Code dem PHP-Interpreter durch schließende Tags zuerst das Ende der Gästebuchtexte vorgibt, um anschließend mit normalen PHP-Kommandos fortzufahren.

Angreifer schleusen ihren Code ein

Diesen Angriff kann der Administrator des Webservers nicht vollständig verhindern. Es ist Sache des PHP-Programmierers, alle Eingaben zu prüfen und von bösartigen Sonderzeichen zu befreien, siehe Kasten "Sichere PHP-Programmierung". Allerdings kann PHP per »GET«, »POST« oder Cookie in das Skript gelangte Daten besser schützen, indem es die besonders gefährlichen Anführungszeichen und Hochkommata per Default durch Backslashes maskiert und damit unschädlich macht. Das erledigt die globale Einstellung »magic_quotes_qpc=on« in »php.ini«. Die Aufmerksamkeit und das gesunde Misstrauen des PHP-Programmierers ersetzt diese Option jedoch nicht.

Es gehört zur Aufgabe des Administrators, den drohenden Schaden möglichst gering zu halten. Ein Code-Injection-Angriff darf lediglich den nachlässigen PHP-Programmierer selbst treffen, keinesfalls aber andere, unbeteiligte und daher unschuldige Nutzer des Servers. Die Open_basedir-Beschränkung erfüllt diese Aufgabe ausreichend. Sie verhindert, dass die eingeschleusten PHP-Befehle auf fremde Daten zugreifen.

Sichere PHP-Programmierung

Für die Sicherheit einer Webseite sind vor allem Sie als PHP-Programmierer zuständig. Grundregel Nummer 1: Vertrauen Sie niemandem. Die folgenden Punkte sollten Sie beim Erstellen Ihrer Webseiten berücksichtigen.

Vertrauen Sie keiner Variablen, die Sie nicht selbst zugewiesen haben

Wichtige Variablen müssen Sie vor der ersten Benutzung initialisieren und mit einem definierten Wert versehen (Listing 4, Zeile 2). Andernfalls reicht ein fehlendes »register_globals=off« und ein Angreifer kann Ihre Variablen beliebig setzen.

Prüfen Sie Dateipfade, bevor Sie Includes ausführen

Selbst wenn eine eventuelle Open_basedir-Einstellung des Administrators den Zugriff auf fremde Verzeichnisse verhindert, gibt es auch im eigenen Webspace genügend Dateien, die nicht nach draußen gelangen sollten, zum Beispiel ».htpasswd« oder die Datei mit den MySQL-Datenbank-Passwörtern. Wenn Ihr Skript einen Übergabeparameter als Include-Pfad einer Datei nutzt, sollte es prüfen, ob das Skript die genannte Datei auch tatsächlich einbinden darf. Andernfalls könnte ein Angreifer den Pfad austauschen.

Es bietet sich an, die Angabe mittels regulärer Ausdrücke zu prüfen. Am besten erlauben Sie ausschließlich ungefährliche Zeichen. Wenn das nicht funktioniert, könnten Sie prüfen, ob der Dateiname mit einem Punkt beginnt, und alle sensiblen Dateien mit einem Punkt beginnend benennen. Auch die Zeichenfolge »..« im Pfad sollte ein Regexp-Ausdruck verhindern. Alle Includes sollten Sie in ein klar definiertes Unterverzeichnis legen, dessen Pfad Sie fest in die Include-Anweisung eintragen.

Kontrollieren Sie Inhalte, die Sie vom Nutzer übergeben bekommen

Alle von einem Nutzer übergebenen Angaben, egal ob URL, Cookie oder Formular, sollte Ihr Skript erst nach gründlicher Prüfung verarbeiten oder speichern. Vor allem muss es darauf achten, ob ein Eingabetext unerlaubte HTML-Tags oder PHP-Programmcode enthält. Die Eingabe könnte ein schließendes »";« enthalten, das den PHP-Interpreter dazu verleitet, nachfolgenden PHP-Code auszuführen (PHP-Code-Injection). Der Interpreter glaubt nach »";«, die Eingabe sei zu Ende. Auch Daten, die Ihr Programm an eine MySQL-Datenbank übergibt, könnten das SQL-Kommando abschließen und danach eigene Kommandos einschleusen (SQL-Injektion).

Sie müssen die Prüffunktionen nicht selbst programmieren, PHP bringt bereits »addslashes()«, »quote_meta()« und »mysql_real_escape_string()« mit, die Sonderzeichen maskieren, sowie »strip_tags()«, das HTML- und PHP-Tags entfernt.

Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Erweiterte Gesprächskultur Workshop: Die eigene Asterisk-Anlage - Teil 2
Tooltipps Werkzeuge im Kurztest
Leichtgewichte Apache-Alternativen
Der richtige Dreh Python und Twisted zur Netzwerkprogrammierung
Voll Karacho PHP-Beschleuniger im Vergleich
Ruhiger schlafen Skripte mit Apache sicher ausführen
Whitepaper
The Role of Open Source in Data Integration

Obwohl in den letzten Jahren viele technische Fortschritte erzielt werden konnten, verfügen die meisten Datenintegrationsprozesse nach wie vor nur über eine sehr begrenzte Automatisierung. Das vorliegende White Paper von dem Industry Analyst Mark Madson wird zunächst ein grundlegendes Verständnis von Daten Integration vermitteln, die Vorzüge von Open Source Lösungen für Daten Integration erläutern und Ihnen professionelle Empfehlungen geben, damit Sie Ihre Integrationsjobs noch einfacher und produktiver gestalten können.

Download PDF (Registrierung erforderlich)
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele (Folge 2)

Der zweite Teil des Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele White Papers beleuchtet anhand weiterer ausgewählter Case Studies die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
Kommentare (0)