Kapitel 5. Sicherheit

Inhaltsverzeichnis
Allgemeine Überlegungen
CGI-Version
Apache-Modul
Dateisystem - Sicherheit
Datenbank - Sicherheit
Fehlerbehandlung
Verwendung von Register Globals
Vom Nutzer übermittelte Daten
Verstecken von PHP
Aktuell bleiben

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 .