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

12 Webserver-Filter für Apache276
gründen nicht infrage. Den Nutzern diese Aufgabe aufzubürden, ist
ebenso indiskutabel – diese werden den Mehraufwand nicht auf sich
nehmen wollen. Genauso wenig kann sich der Hoster darauf verlassen,
dass seine Kunden stets aktuelle Versionen der Software einspielen und
durch Security-Mailinglisten oder -Foren stets über die letzten Sicher-
heitslücken Bescheid wissen.
Sobald sich mehr als eine Handvoll Benutzer auf dem System tum-
meln, kann der Admin fest davon ausgehen, dass zu jeder gegebenen
Zeit mindestens eine Anwendung mit eklatanten Sicherheitslücken
aktiv ist und von Angreifern für ihre finsteren Zwecke missbraucht
werden kann.
Da es abgesehen von den in Kapitel 10 »PHP Intern« angesproche-
nen kaum sinnvolle interne Schutzmaßnahmen gibt, die den Server vor
einer Kompromittierung retten können, muss eine Art Schutzwall zwi-
schen die verwundbaren Applikationen und die Angreifer geschaltet
werden, die Attacken noch vor dem PHP-Skript abfängt. Apache bietet
eine wohldefinierte und sehr leistungsfähige Modulschnittstelle – und
genau an diesem Punkt setzen die Apache-Module mod_security und
mod_parmguard an.
12.2 Blacklist oder Whitelist?
Die Gretchenfrage bei jeglicher Art von Filtern ist stets: Sollte man
einem Whitelist- oder einem Blacklist-Ansatz folgen? Auch bei Filter-
modulen für Apache stellt sich diese Frage, verfolgen doch
mod_security und mod_parmguard jeweils einen dieser Ansätze. Wäh-
rend mod_security in seinem typischen Anwendungsfeld eine Blacklist
implementiert, also unerwünschte Variablen, Aufrufe etc. herausfil-
tert, geht mod_parmguard genau andersherum vor. Mit einer Whitelist
werden hier für alle in der PHP-Software verwendeten Variablen die
erwünschten Wertebereiche festgelegt – und diese Whitelist muss stets
befolgt werden.
Grundsätzlich ist eine Whitelist dem Blacklist-Ansatz vorzuziehen,
denn sie ist prinzipbedingt gegen neue Angriffsarten oder Exploits
sicherer als die ständig zu aktualisierende Blacklist. Da der Angreifer
dem Verteidiger stets einen Schritt voraus ist, kann eine Blacklist Werte
»übersehen«, die zwar einen Angriff darstellen, aber noch nicht in der
Liste stehen. Eine Whitelist kennt diese Probleme nicht, da sie stets nur
die Werte enthält, die auch in der Anwendung benötigt werden, und
alle anderen Variablen und Variablenwerte außerhalb des legalen Gel-
tungsbereiches entsorgt. Sie muss jedoch mit sehr hohem initialen Auf-
wand konfiguriert werden, um genau zur Anwendung zu passen.Wenn

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