Tutte le considerazioni che verranno espresse di seguito fanno riferimento alla versione 5 del linguaggio PHP.
E’ comunque utile precisare sin dall’inizio che di per se PHP si configura come un linguaggio con un buon livello di sicurezza intrinseco.
Partiamo comunque dalla gestione degli errori, il linguaggio in questione fornisce vari livelli di avviso per l’utente, eccoli di seguito:
- Compile-time errors → errori di compilazione, non intercettabili a livello applicativo
- Fatal errors → errori fatali che bloccano l’esecuzione di uno script
- Recoverable errors → errori “recuperabili” che sono comunque bloccanti e vengono intercettati a livello applicativo
- Warnings → errori non bloccanti, comunque recuperabili
- Notices → errori informativi non sempre significativi
Ricapitolando gli unici errori che possono essere visualizzati a livello applicativo sono gli ultimi tre dell’elenco. Seppure sia molto utile durante la fase di sviluppo visualizzare tutti questi messaggi di errore, in fase di produzione potrebbe rilevare alcune vulnerabilità che alcuni “attaccanti” potrebbero sfruttare.
Dalla versione 5 di PHP è stato introdotto il costrutto try-trow-catch , struttura che tra l’altro abbiamo già incontrato nell’articolo http://poyblog.wordpress.com/2010/04/14/sicurezza-del-linguaggio-javascript-strumenti-di-difesa/
Il funzionamento è più o meno il medesimo, ovvero all’interno del blocco try si cerca di eseguire il codice, che può abilitare alcune eccezioni “guidate” con l’istruzione throw . Le eccezioni vengono poi rimandate e gestite con l’istruzione cacth.
Ecco un esempio:
try{
$valore = 0;
if($valore == 0)
trow new Exception(”Divisione per 0′);
else
$inverso = 1/$inverso;
}
catch(Exception $e){
echo “Eccezione intercettata: ”, $e, “\n”;
}









