User Submitted Data
De
grootste
zwakheid
in
veel
PHP
programma
'
s
ligt
niet
in
de
taal
zelf
,
maar
is
meer
een
slechte
stijl
van
programmeren
zonder
beveiliging
in
gedachten
.
Om
deze
reden
,
zul
je
ALTIJD
de
tijd
moeten
nemen
om
na
te
denken
over
de
implicaties
van
elke
stuk
code
,
om
te
verzekeren
dat
er
geen
schade
kan
worden
aangericht
omdat
er
een
variabele
verkeerd
staat
.
Voorbeeld
5-5
.
Gevaarlijk
gebruik
van
variabelen
?php
/
/
verwijder
een
bestand
uit
de
home
directory
van
een
gebruiker
,
/
/
of
misschien
die
van
iemand
anders
.
unlink
(
$evil_var)
;
/
/
Log
toegang
,
of
misschien
niet
?
fputs
($fp
,
$evil_var)
;
/
/
Voer
iets
triviaals
uit
,
of
misschien
"rm
-rf
*"
?
system
($evil_var)
;
exec
($evil_var)
;
?
|
|
Je zult altijd enorm voorzichtig moeten zijn om ervoor te zorgen
dat geen enkele variabele die is gesubmit vanuit een webbrowser
grondig is controleerd, met inachtneming van de volgende vragen:
-
Zal
dit
script
alleen
de
bedoelde
bestanden
benaderen
?
-
Kan
er
worden
omgegeaan
met
niet
gewenste
gegevens
?
-
Kan
dit
script
gebruikt
worden
voor
niet
bedoelde
zaken
?
-
Kan
het
gebruikt
worden
in
samenwerking
met
andere
scripts
in
negatieve
zin
?
-
Worden
alle
transactions
voldoende
gelogd
?
Door jezelf de vragen te stellen tijdens het schrijven van een
script, voorkom je het herschrijven van scripts om de veiligheid
te vergroten. Met dit in gedachten, zul je niet de veiligheid van
een systeem kunnen garanderen, maar de beveiling zal zeker beter
zijn dan als je jezelf deze vragen niet stelt.
Je
kunt
ook
overwegen
om
register_globals
,
magic_quotes
,
of
andere
handigheden
uit
te
zetten
die
je
kunnen
tegenwerken
om
de
validiteit
,
herkomst
,
of
waarde
van
een
gegeven
variabele
te
conroleren
.
Het
werken
met
PHP
in
error_reporting(
E_ALL
)
mode
kan
je
ook
helpen
waarschuwen
over
variabelen
die
gebruikt
worden
voordat
ze
zijn
gecontroleerd
of
geïnitialiseerd
.