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
.