Kapitel 5. Sicherheit
PHP ist eine m�chtige Sprache, und der Interpreter, der in einen
Webserver als Modul oder als separate CGI-Version
eingebunden werden kann, kann auf Dateien zugreifen, Befehle
ausf�hren und Netzwerkverbindungen zu einem Server herstellen.
Diese Eigenschaften k�nnen einen Webserver unsicher machen, wenn man
es bei den Voreinstellungen bel�sst.
PHP wurde besonders daf�r entwickelt, um eine sicherere Sprache als
Perl oder C f�r die Erstellung von CGI-Programmen bereitzustellen.
Mit der richtigen Wahl der Einstellungen beim Kompilieren und
zur Laufzeit bietet PHP genau die Kombination aus Freiheit und
Sicherheit, die gerade ben�tigt wird.
Da es sehr viele verschiedene M�glichkeiten gibt, PHP zu nutzen,
gibt es viele Konfigurationseinstellungen, die das Verhalten von
PHP beeinflussen. Eine gro�e Auswahl an Einstellungen garantiert,
dass man PHP f�r viele Zwecke einsetzen kann. Allerdings
bedeutet das auch, dass es Kombinationen gibt, die eine Installation
mit nur ungen�gender Sicherheit zur Folge haben.
Die Flexibilit�t der Konfiguration konkurriert mit der Flexibilit�t
in der Programmierung. Mit PHP k�nnen komplette Server Applikationen
mit allen M�glichkeiten eines Shell Benutzers erstellt werden, oder
auch nur einfache Server Side Includes mit einem minimalen Risiko in
einer streng kontrollierten Umgebung. Wie die Umgebung erstellt wird,
und wie sicher diese ist, ist zu einem gro�en Teil die Sache des PHP
Entwicklers.
Dieses Kapitel beginnt mit einigen generellen Ratschl�gen zur Sicherheit,
erkl�rt die verschiedenen Kombinationen der Konfigurationseinstellungen
und unter welchen Gegebenheiten sie sicher genutzt werden k�nnen, und
beschreibt verschiedene �berlegungen zur Programmierung f�r verschiedene
Sicherheitsstufen.
Allgemeine �berlegungen
Ein komplett sicheres System ist praktisch ein Ding der Unm�glichkeit,
weshalb ein unter Sicherheitsprofis oft genutzter Ansatz ist, einen
Mittelweg zwischen Risiko und Verwendbarkeit zu finden.
Wenn jede von einem Benutzer �bermittelte Variable zwei Formen von
biometrischer Pr�fung (wie z.B. ein Scan der Netzhaut und ein
Fingerabdruck) verlangen w�rde, w�re eine extrem hohe Ebene der
Verantwortlichkeit erreicht. Ein sehr komplexes Formular auszuf�llen
w�rde auch eine halbe Stunde in Anspruch nehmen, die Benutzer dazu
ermuntern k�nnte, Wege zur Umgehung der Sicherheitsma�nahmen zu suchen.
Die beste Sicherheit ist oft unaufdringlich genug um den Anforderungen
zu entsprechen, ohne den Benutzer an seiner Arbeit zu hindern oder den
Code-Autor mit �bertriebener Komplexit�t zu �berlasten. Tats�chlich
sind einige Sicherheitsangriffe nur die Folge von allzu strengen
Sicherheitsma�nahmen, was mit der Zeit nur zu deren Unterminierung
f�hrt.
Eine Phrase die es wert ist, sich an sie zu erinnern: Ein System ist nur
so gut wie das schw�chste Glied in der Kette. Wenn alle Transaktionen
mittels Zeit, Ort, Transaktionstyp, etc. streng mitprotokolliert werden,
der Benutzer aber nur mittels einem einzigen Cookie verifiziert wird,
l�sst die Zuverl�ssigkeit f�r die Bindung des Benutzers an das
Transaktions-Log bedrohlich nach.
Denken Sie w�hrend der Tests daran, dass Sie selbst f�r die einfachsten
Seiten nicht alle M�glichkeiten testen k�nnen. Der von Ihnen vielleicht
erwartete Input wird zu dem eines verstimmten Mitarbeiters oder eines
Crackers der Monate Zeit hat, oder einer Katze, die �ber die Tastatur
l�uft in keinerlei Zusammenhang stehen. Deshalb betrachten Sie Ihren
Code am Besten aus der logischen Perspektive um zu erkennen, wo
unerwartete Daten eingebracht werden k�nnen und fragen sich dann,
wie diese modifiziert, reduziert, oder weiter ausgef�hrt werden.
Das Internet ist voll von Leuten die versuchen, sich durch
Entschl�sseln/zerst�ren Ihres Codes, den Zusammenbruch Ihres
Systems, Einsetzen von unangebrachten Inhalten, und anderen, Ihren
Tag interessant gestaltenden Ma�nahmen, einen Namen zu machen.
Es ist egal, ob Sie eine kleine oder gro�e Site haben, Sie sind
einfach ein Ziel wenn Sie online sind oder wenn Sie einen Server
haben, zu dem man eine Verbindung aufbauen kann. Viele
Cracker-Programme erkennen nicht die Gr��e, sondern durchsieben
einfach gewaltige IP Bl�cke im Netz, um Opfer zu finden. Versuchen
Sie, keines zu werden.