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

51.3 Wichtige Begriffe
ten Scriptkiddies werden schnell von einem Server ablassen, der auf
den ersten – meist automatisierten – Blick keine Angriffsfläche bietet.
Ein Unternehmen, das sehr viele wertvolle Daten verwaltet, ist
jedoch auch für erfahrenere Cracker, die ihre Raubzüge aus kommerzi-
ellen Gründen durchführen, ein sehr attraktives Ziel. Hacker werden
viel Zeit und Mittel aufwenden, um an diese Daten zu gelangen, es
reicht daher nicht, die Datei mit sämtlichen Kundendaten in einem ver-
steckten, aber für den Webserver zugänglichen Verzeichnis abzulegen.
Sobald die möglichen Eindringlinge das Ziel als sehr attraktiv einge-
stuft haben, werden sie sich so lange an den frei zugänglichen Teilen
verbeißen, bis sie einen Zugang finden. Mit einer Kundendatenbank
voller Kontoinformationen können sie schließlich wesentlich mehr
anfangen als mit den Bildern einer erfolgreichen Goldfischzucht.
1.3 Wichtige Begriffe
Um in den folgenden Kapiteln nicht stets neue Erklärungen finden zu
müssen, möchten wir einige wichtige Begriffe aus dem Sicherheitsjar-
gon vorab erklären.
Defense in Depth
Werden Sicherheitskonzepte angesprochen, taucht das Schlagwort
»Defense in Depth« immer öfter auf, um ein möglichst schlagkräftiges
Sicherheitsprinzip zu beschreiben. Und tatsächlich ist das Prinzip der
»Tiefenverteidigung«, wie eine deutsche Übersetzung des Begriffes lau-
ten könnte, bei konsequenter Umsetzung sehr wirksam.
Der von Defense in Depth verfolgte Ansatz geht von einer
zwiebelschalenförmigen Sicherung aus, bei der eine Anwendung durch
Sicherheitsmaßnahmen auf mehreren Ebenen geschützt ist.
Netzwerk
Diese Sicherung beginnt bereits auf der Netzwerkebene: Firewalls
trennen die Webinfrastruktur vom internen Netzwerk oder VPN des
Betreibers, und Paketfilter sorgen dafür, dass nur diejenigen Benutzer
Zugriff auf sensible Bereiche haben, die auch administrativ dafür zuge-
lassen sind.
Betriebssystem
Auf Betriebssystemebene setzt die zweite Verteidigungslinie gegen
Cracker und sonstige Finsterlinge an: Ein gehärteter Linux-Kernel
wehrt selbsttätig Angriffe gegen den IP-Stack oder interne Funktionen
ab und erlaubt kein Nachladen und Ausführen von Kernel-Modulen.
Eine im Kernel implementierte Changeroot-Umgebung (chroot) sepa-
riert Anwendungen voneinander – und weitere Maßnahmen, die auf
Betriebssystemebene implementiert werden.
1 Einleitung6
Web Application Firewall
Eine Web Application Firewall (WAF), die webbasierte Angriffe
aus dem produktiven Traffic herausfiltert und die Administratoren
informiert, ist die dritte Verteidigungsebene.
Webserver
Bei Webapplikationen ist die nächste Ebene einer Defense-in-
Depth-Strategie der Webserver, der im Rahmen seiner Möglichkeiten
gehärtet werden sollte. Dazu gehören nicht nur Techniken zur Vermei-
dung von Informationslecks, sondern auch Sicherheitsmaßnahmen wie
der Einsatz von SSL. Auch das Apache-Modul mod_security, das sich
selbst bereits als WAF bezeichnet, oder chroot- und suExec-Mechanis-
men sind Teil dieser Ebene.
PHP-Anwendungen
Die nächste Ebene des Defense in Depth sind die PHP-Anwendun-
gen selbst, und damit der Hauptgegenstand dieses Buches. Auch diese
Anwendungen lassen sich wiederum in Schichten aufteilen, die separat
voneinander gesichert werden.
Ein-/Ausgabe
Auf der Datenebene sollte gewährleistet sein, dass keine schadhaf-
ten oder in böswilliger Absicht erstellten Daten (wie XSS-Angriffe
zweiter Ordnung, siehe den nächsten Abschnitt) in die Datenspeicher
gelangen können. Die Datenabfrageschicht sollte so implementiert
sein, dass Angreifer nicht durch Tricks andere Daten als die vom Ent-
wickler vorgesehenen abfragen können – und die Ein-/Ausgabeschicht
muss Eingaben auf Schadcode überprüfen, diesen abfangen und mögli-
cherweise unerwünschte Ausgaben verhindern.
Der Vorteil an dieser Sicht der Dinge ist, dass die Zusammenarbeit
zwischen den verschiedenen Schichten ähnlich wie im OSI-Modell
geregelt ist: Jede Schicht kommuniziert nur mit der ihr direkt vorange-
henden und nachfolgenden Ebene. Dadurch können Entwickler und
Administratoren mit der größtmöglichen Unabhängigkeit voneinander
arbeiten, um ihren jeweiligen Teil der Anwendung abzusichern.
First und Second Order
Bei Angriffen gegen andere Systeme geht man grundsätzlich von zwei
verschiedenen Angriffstypen aus, und zwar von direkten Angriffen der
ersten Ordnung und indirekten oder Angriffen der zweiten Ordnung.
First Order
Ein Angriff erster Ordnung liegt vor, wenn durch eine SQL-Injec-
tion, XSS (was dies alles ist, erfahren Sie in den folgenden Kapiteln)
oder eine sonstige Attacke direkte Ergebnisse geliefert werden, also
etwa die Liste der Administratorpasswörter aus der entsprechenden
Datenbanktabelle gelesen und angezeigt wird, oder JavaScript-Code
direkt im Kontext der angegriffenen Webseite ausgeführt wird.
Angriffe erster Ordnung erlauben dem Angreifer, aufgrund der Ant-
wort des angegriffenen Systems sein Vorgehen zu optimieren und sein

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