Post

La sicurezza in PHP – parte prima [gestione degli errori e delle eccezioni]

In sicurezza on aprile 20, 2010 by poyblog Messo il tag: ,

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”;

}

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s

Iscriviti

Get every new post delivered to your Inbox.