Verwendung von Register Globals
Ein
Feature
von
PHP
zur
Erhöhung
der
Sicherheit
ist
die
Konfiguration
von
PHP
mit
register_globals
=
off
.
Mit
Deaktivierung
der
Möglichkeit
,
irgendeine
vom
Benutzer
übertragenen
Variable
in
den
PHP
Code
zu
injizieren
,
können
Sie
die
Anzahl
"
vergifteter
"
Variablen
reduzieren
,
welche
ein
potentieller
Angreifer
zufügen
könnte
.
Dieser
benötigt
mehr
Zeit
,
um
sich
Übermittlungen
auszudenken
,
und
Ihre
internen
Variablen
sind
effektiv
von
den
übergebenen
Benutzervariablen
isoliert
.
Während
dies
den
benötigten
Aufwand
mit
PHP
zu
arbeiten
leicht
erhöht
ist
dargelegt
,
dass
die
Vorteile
gegenüber
dem
Aufwand
klar
überwiegen
.
Beispiel
5-14
.
Mit
register_globals=on
arbeiten
?php
if
(
$username
)
{
/
/
kann
vom
User
mit
get
/
post
/
cookies
übermittelt
werden
$good_login
=
1
;
}
if
($good_login
==
1
)
{
/
/
kann
vom
User
mit
get
/
post
/
cookies
übermittelt
werden
fpassthru
("
/
highly
/
sensitive
/
data
/
index.html")
;
}
?
|
|
Beispiel
5-15
.
Mit
register_globals
=
off
arbeiten
?php
if(
$_COOKIE['username'])
{
/
/
kann
nur
von
einem
Cookie
kommen
$good_login
=
1
;
fpassthru
("
/
highly
/
sensitive
/
data
/
index.html")
;
}
?
|
|
Dies weise genutzt ist es auch möglich, präventive Messungen
durchzuführen, um bei versuchten Vorstößen zu warnen. Wenn Sie im
Voraus wissen, woher eine Variable kommen soll, können Sie
prüfen, ob die übermittelten Daten nicht einen unpassenden Weg
genommen haben. Obwohl dies nicht garantiert, dass Daten nicht
nur ausgedacht sind, erfordert es von einem Angreifer, auch den
richtigen Weg zu finden.
Beispiel
5-16
.
Entdecken
einfacher
Manipulationen
von
Variablen
?php
if
(
$_COOKIE['username'
]
!$_POST['username'
]
!$_GET['username'
]
)
{
/
/
Durchführen
anderer
Checks
,
ob
der
Benutzername
gültig
ist..
.
$good_login
=
1
;
fpassthru
("
/
highly
/
sensitive
/
data
/
index.html")
;
}
else
{
mail("admin@example.com"
,
"Possible
breakin
attempt"
,
$_SERVER['REMOTE_ADDR'])
;
echo
"Security
violation
,
admin
has
been
alerted
."
;
exit
;
}
?
|
|
Natürlich bedeutet ein einfaches Deaktivieren von
register_globals nicht, dass Ihr Code nun automatisch sicher ist.
Jeder Teil mit Daten sollte auch auf andere Arten geprüft werden.