Felhasználótól érkező adatok

A legtöbb probléma sok PHP programban nem a nyelvben rejlik, hanem abból fakad, hogy a kód nem a biztonságosságot szem előtt tartva készült. Ezért te mindig szánj megfelelő időt arra, hogy ellenőrizd, hogy egy adott kódrészletre milyen hatással lehet egy váratlan hibás adat.

Példa 4-5. Veszélyes változóhasználat


<?php
// egy fájl törlése a user könyvtárából... vagy
// talán valaki máséból?
unlink ($ordogi_valtozo);

// Az elérés naplózása... vagy nem?
fputs ($fp, $ordogi_valtozo);

// Valami egyértelmű dolog futtatása.. vagy rm -rf *?
system ($ordogi_valtozo);
exec ($ordogi_valtozo);
?>

     
Mindig alaposan meg kell vizsgálnod a felhasználók által beadott adatokat, feltéve magadnak a következő kérdéseket:

Kellőképpen átgondolva a fenti kérdéseket a szkript írásakor, megkímélheted magad, hogy később végiggondolva a problémákat szerencsétlen módon újra kelljen írnod a teljes kódot a biztonságosság növelése érdekében. Ezzel sem tudod garantálni a rendszer biztonságát, de segíthetsz a növelésében/fenntartásában.

Számításba veheted a register_globals, magic_quotes és más kényelmi szolgáltatások kikapcsolásának a gondolatát is, mivel ezek megfosztanak az adatok forrásának, helyességének, tartalmának ismeretétől. Ha a PHP-vel maximális hibajelentési szinten dolgozol, azaz az error_reporting E_ALL beállítását alkalmazod, sok figyelmeztetést kaphatsz olyan változókkal kapcsolatban, amiket azelőtt használsz, hogy beállítanád az értéküket, ezzel megvédheted magad attól, hogy véletlenül hibás adatokkal dolgozz.