Hibakezelés biztonsági problémái

Default book

A php hibakezelésének több szintje van. E_ALL kijelzi az összes hibát, figyelmeztetést és megjegyzést. Ez felesleges, mert éles rendszeren a megjegyzéseknek (E_NOTICE) és a figyelmeztetéseknek (E_WARNING) nincs helyük. Ezeket csak a Fejlesztői és a tesztelői rendszeren szabad használni.

Ha a képernyőre kiírja a rendszer egy végzetes hiba hibaüzenetét, akkor a támadó felderítheti az include-olt fájlok útvonala alapján, hogy hol éredemes próbálkoznia

Az éles szerveren a php.ini beállításait az alábbi módon érdemes használni

display_errors=off - paraméterével lehet a hibaüzeneteket letiltani a képernyőről

log_errors = on - bekapcsolja a logolást a szerver oldalon.

error_log = /error_elérési_utvonal/error.log  - paraméterével olyan helyre kell menteni az error.log fájlt, amely nem elérhető a web felől.

A kódban a mindenkori futás elején beállított error_reporting() függvény segítségével gyorsan átállítható a riportolás az éles és a Fejlesztői szerver változat esetén.

További probélmát okozhat, hogyha a POST változókat GET változókkal írja felül a támadó. Ez akkor érdekes, hogyha a szerver oldalon REQUEST globális változók felhasználásával veszi át a script a paramétereket.