PHP-Filter für den Eigengebrauch

Teil 6: Sicherheit bei PHP: Bereinigen von Daten durch eine Web-Applikation

Sicherheitslücken

Das Filtern der Eingabe stellt eine enorm wichtige Voraussetzung für die Sicherheit von Web-Applikationen in PHP dar. Wer sich bisher mit dem Überprüfen und Bereinigen der Eingabe schwertat, wird damit einen großen Schritt in Richtung verbesserter Sicherheitsvorkehrungen vorankommen.

Doch Vorsicht ist geboten, denn die eingebauten Filterfunktionen haben ihre technischen Grenzen. Sich blind darauf verlassen zu wollen, dass die eingebauten Filterfunktionen absoluten Schutz bieten, wäre vermessen.

Sogar wenn man jede denkbare Eingabe korrekt filtert und die Ausgabe durchgängig ausmaskiert, besteht immer noch großes Potenzial für Manipulationen. Dies trifft insbesondere zu, wenn zwei oder mehr Web-Applikationen auf demselben Server ausgeführt werden.

Verfügt jede dieser Applikationen über ihr eigenes Sessionhandling, wäre man geneigt zu denken, dass keine relevanten Sicherheitsprobleme auftreten. Doch weit gefehlt, denn es kann zur Datenverwechslung zwischen Session 1 und 2 kommen.

Alle Session-Daten werden standardmäßig im Verzeichnis /tmp gespeichert (diese Konfiguration kann und sollte unbedingt geändert werden) und von allen Applikationen gemeinsam genutzt. Exploits zwischen Applikationen sind somit auch leicht möglich.

Bei Shared-Hosting ist das Problem gravierend. Insbesondere zwei Szenarien kommen sehr oft vor. Die beiden folgenden Szenarien sind echte Beispiele aus der Realität.

1. Nicht-validierte Daten in Mehrschrittformularen

Zwei Applikationen, die auf einem Webserver laufen, können leicht kompromittiert werden, wenn auch nur eine dieser Applikationen nicht validierte Daten einer Sitzung auf dem Server zwischenspeichert. Das kann beim Einsatz von Mehrschritt-Formularen sehr leicht passieren.

Sicherheit bei PHP

© Archiv

Die Sessionsmanipulation (in Szenario 1) geht von der gehackten Applikation Nr. 1 aus, greift verändernd auf die Session-Daten zu und umgeht so in der eigentlich sicheren Applikation Nr. 2 die konsequente Filterung der Eingaben in jedem Schritt.

Mehrschrittformulare kommen beispielsweise in Web-Shops zur Umsetzung eines Bestellvorgangs vor. Im ersten Schritt wird etwa die Registrierung des Benutzers durchgeführt, im zweiten Schritt kann der Warenkorb editiert werden, im dritten Schritt werden die Zahlungsdaten eingegeben, im vierten Schritt zeigt die Applikation eine Übersicht der Bestellung an und erst danach, im letzten Schritt, wird die Transaktion durchgeführt und die Kreditkarte belastet.

Die Web-Applikation erzeugt für diesen ganzen Vorgang eine Sitzung und nimmt während dieser Sitzung verschiedene Benutzereingaben an, doch verifiziert werden sie erst beim Bezahlen. Auf diese Weise müssen die Daten - einschließlich der Kreditkartendaten - während der Sitzung bis zum endgültigen Abschluss der Transaktion auf dem Webserver zwischengespeichert werden.

Dieser als benutzerfreundlich konzipierte Vorgang ist leider nur zu oft unsicher implementiert. Zwar nutzt die Bezahl-Applikation eine sichere https-Verbindung, aber die Daten der Sitzung werden oft ungefiltert und ohne besondere Schutzvorkehrungen im Dateisystem des Webservers abgelegt und öffnen damit Tür und Tor für Manipulationen.

Oft ist die betreffende Web-Applikation nicht die Einzige auf dem Server. Ohne weitergehende Sicherheitsvorkehrungen stellt sie für die anderen Web-Applikationen eine Gefahr dar.

Eine hypothetische Applikation Nr. 2 mag konsequent nur unmittelbar validierte und bereinigte Daten der jeweiligen Session annehmen. Dennoch ist auch diese Applikation durch die Sicherheitslücken der Applikation Nr. 1 potenziell gefährdet.

Sollte die erste Applikation mittels Cross-Site-Scripting (XSS) oder SQL-Injektionen kompromittiert werden, wäre auch die zweite Applikation davon unmittelbar betroffen. Da beide Applikationen auf demselben Webserver gehostet werden, kann ein Angreifer den Session-Identifier von Applikation Nr. 1 in die Session-Cookies der Applikation Nr. 2 hineinkopieren.

Sicherheit bei PHP

© Archiv

Eine XSS-Attacke auf ein Skript mit nicht bereinigter Variable $_SERVER['PHP_SELF'].

Vertraut die für sich genommen sichere Applikation Nr. 2 allen Daten der eigenen Sitzung, ohne sie mithilfe passender Filterfunktionen eingehend zu verifizieren, kann sie durch so präparierte Daten unterwandert und praktisch nach Belieben manipuliert werden.

2. Datenintegrität der Cookies

Beim Entwickeln von Web-Applikationen neigen viele Programmierer dazu, ihren eigenen Code wiederzuverwenden, der sich in anderen Projekten bereits bewährt hat, um Zeit zu sparen. Immerhin ist der eigene Quelltext auch hinreichend ausgetestet und bereits praxiserprobt. Scheinbar spricht auch nichts dagegen, das Rad nicht neu erfinden zu wollen. Doch das Konzept hat auch seine Nachteile, wie sich im Folgenden zeigen wird.

Werden zwei Web-Applikationen auf einem gemeinsamen Server ausgeführt und stammen beide von demselben Entwicklerteam, sind sie meistens sehr ähnlich programmiert. In der Regel richten sie sich an zwei völlig verschiedene Anwendergruppen.

Die erste Applikation richtet sich zum Beispiel an das (ungeprüft registrierte) Internet-Publikum. Die zweite Applikation bedient nur Mitglieder eines B2B-Partnernetzwerkes wie beispielsweise Vertragshändler. Nutzen beide Applikationen aus Sicherheitsgründen verschiedene Sessions und übertragen die Daten via https, könnte man meinen, die Sicherheit beider Applikationen sei gewährleistet. Doch das ist leider nur unter ganz bestimmten Bedingungen der Fall.

Nehmen wir einmal an, dass ein legitimer Benutzer der Applikation Nr. 1 sich nebenbei auch als Hacker betätigt. Er kann sich mit seinen eigenen Zugangsdaten ganz legal in die Applikation Nr. 1 einloggen. Soweit ist auch scheinbar nichts am Sicherheitskonzept zu beanstanden. Doch nun kopiert der Hacker seinen Session-Identifier aus der Applikation Nr. 1 in den Session-Cookie der Applikation Nr. 2 hinein.

Da beide Applikationen vom selben Entwicklerteam stammen, ist die Chance recht groß, dass sie ähnlich aufgebaut sind. Aufgrund der gemeinsam geteilten Umgebung der Benutzerobjekte meint die betreffende Applikation Nr. 2 fälschlicherweise ein gültiges Benutzerobjekt vorgefunden zu haben und akzeptiert den Angreifer als legitimen und bereits eingeloggten Benutzer. Da helfen dann auch keine Filterfunktionen mehr.

Mehr zum Thema

Youtube Sperre umgehen GEMA
Videos freischalten

So umgehen Sie die GEMA-Sperre bei Youtube. Was Sie dazu brauchen, und wie es am einfachsten geht.
Neue Fritzboxen unterstützen den AC-Standard.
WLAN-Geschwindigkeit verdoppeln

Mehr WLAN-Geschwindigkeit: Mit dem WLAN-Standard 802.11ac und den richtigen Geräten und Einstellungen verdoppeln Sie den Datendurchsatz.
Netflix auf dem TV
Programm in der Übersicht

Welche Filme und Serien gibt es bei Netflix eigentlich zu sehen? Was ist neu im Streaming-Angebot? Diese Antworten helfen weiter.
Netflix
Streaming

Preise, kompatible Geräte, Datenrate, Serien- und Filmangebot von Netflix: Wir beantworten die wichtigsten Fragen rund um den Streaming-Dienst.
E.T. – Der Außerirdische
Vorschau auf Film- und Serien-Highlights

Amazon Prime Instant Video lockt im Dezember 2016 mit Film-Highlights wie "E.T.", "Fast & Furious 7" und der Serie "Ku’damm 56​".