O'Reilly logo

PHP-Sicherheit: PHP/MySQL-Webanwendungen sicher programmieren by Stefan Esser, Christopher Kunz

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

21110.2 Bestandteile eines sicheren Servers
10.1.5 Speicherproblem dank htmlentities
In PHP 4 und PHP 5 gab es bis zur Version 5.1.6 bzw. 4.4.4 eine kriti-
sche Lücke in der Funktion
htmlentities(), die dafür sorgen konnte,
dass der Heap-Speicher mit vom Angreifer übergebenen Daten über-
schrieben wurde. Dadurch war es unter Umständen möglich, eigenen
Code auszuführen. Besonders unangenehm war dieses Problem durch
die Tatsache, dass
htmlentities() stets direkt mit vom User angegebe-
nen Daten verwendet wird, also leicht angreifbar ist. Dieses Problem
wurde in PHP 5.2.0 behoben.
10.1.6 Bewertung
Sicherheits-Bugs in PHP sind zwar selten, kommen aber dennoch vor.
Besonders problematisch ist, dass ein Fehler im Kern der Skriptsprache
oft dazu genutzt werden kann, eigenen Schadcode auszuführen und so
Backdoors und Rootkits auf dem Webserver hochzuladen und zu
benutzen. Daher sollten Sie stets ein wachsames Auge auf möglicher-
weise neu entdeckte Security-Fehler in PHP haben – und den Harde-
ning-Patch für PHP (siehe Kapitel 11 »PHP-Hardening«) installieren.
Dieser wurde mit besonderem Augenmerk auf Lücken in PHP entwi-
ckelt und enthält einige generische Methoden, um das Gefahrenpoten-
zial dieser Lücken zu senken.
10.2 Bestandteile eines sicheren Servers
Neben den gegen Sicherheitslücken gesicherten PHP-Skripten ist ein
wesentlicher Bestandteil der Betriebssicherheit Ihrer Anwendungen der
Server selbst, also die Kombination aus Web- und Datenbankserver.
Dem Prinzip »defense in depth« folgend, sollten alle Teile Ihrer
Anwendung bestmöglich abgesichert sein, um selbst im Fall einer
lückenhaften Anwendung mögliche Angreifer nicht bis zum Kern des
Systems vordringen zu lassen.
Zur Absicherung eines PHP-Servers müssen Sie folgende drei
Teilsysteme sichern:
Webserver
Die PHP-Installation selbst
Datenbankserver
Dem wichtigsten dieser Punkte, die Installation eines möglichst siche-
ren PHP, wollen wir uns im folgenden Kapitel hauptsächlich widmen.
Der Server muss hier sowohl gegen Angreifer von außen – also Hacker,
die in Ihr System eindringen wollen – als auch gegen Attacken von
10 PHP intern212
innen durch böswillige Kunden auf demselben Server optimal geschützt
werden. Gerade für Webhoster ist diese Frage von zentraler Bedeu-
tung, haben sie doch die Aufgabe, womöglich Hunderte von Kunden
mit ihrer Dienstleistung zu versorgen, sie aber voneinander abzukap-
seln. Aber auch für Agenturen oder andere Dienstleister ist die Kapse-
lung der Kunden notwendig – schließlich sollen Probleme mit dem
einen Kunden nicht die anderen Mieter auf Ihrem Webserver negativ
beeinflussen.
Sofern Sie nicht auf sogenannte »VServer«, also mehrere virtuelle
Linux-Installationen auf einem physikalischen Server, zurückgreifen
und all Ihre Kunden und Projekte mit demselben Webserver betreuen,
müssen Sie einen Weg finden, Angriffe von innen und außen zu unter-
binden. Gleichzeitig müssen Sie in Betracht ziehen, dass manche
Sicherheitsmaßnahmen Einschränkungen in der Funktionalität zur
Folge haben, sodass sich eine Art Prioritätsdreieck ergibt.
Möchten Sie möglichst viele Features erhalten, dabei aber keine
Abstriche bei der Geschwindigkeit machen, werden Sie Abstriche bei
der Sicherheit machen müssen – einen gangbaren Kompromiss aus den
drei konträren Extremen dieses Dreiecks müssen Sie letztlich für sich
selbst finden.
PHP bringt glücklicherweise einige eingebaute Sicherheitsfeatures
mit, die unabhängig von der Installationsmethode aktivierbar sind –
die zwei wichtigsten dieser Features sind Safe Mode und
open_basedir.
Zunächst sollten Sie jedoch die Frage lösen, auf welche Art Sie
PHP installieren und absichern wollen – stets unter Beachtung des
Prioritätsdreiecks.
Sicherheit
Geschwindigkeit
Features
Abb. 10–1
Prioritätsdreieck bei der
PHP-Konfiguration

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required