Corsi on-line

Type casting in PHP e sicurezza

Notoriamente PHP non è un linguaggio fortemente tipizzato, ciò significa che lo sviluppatore non è obbligato a specificare il tipo di dato associato ad ogni singola componete sintattica utilizzata per l’allocazione di valori in memoria; in molti si saranno comunque chiesti se, dal punto di vista della sicurezza, possa essere preferibile inizializzare variabili determinandone il tipo in sede di dichiarazione, come accade nell’esempio seguente:

$sito = (string)"mrwebmaster"; // stringa
$linguaggi = array("PHP", "Java", "Perl"); // array
$anni = (integer)39; // numero intero

PHP
Nonostante la debole tipizzazione, in realtà PHP ha comunque bisogno di individuare il tipo corrente associato ad un valore per poterlo utilizzare, per cui al valore stesso viene attribuito un metadato relativo al suo tipo; sulla base di questa logica la tipizzazione in fase di inizializzazione diviene priva di senso nel caso di valori letterali che, per loro natura, sono disambigui. Per cui:

$var = "mrwebmaster";
echo is_string($var); // 1 in quanto TRUE
$var = (string)"mrwebmaster";
echo is_string($var); // comunque 1 in quanto TRUE

Lo stesso discorso ha valore anche per quanto riguarda i tipi interi e i vettori; il type casting in sviluppo può invece risultare utile nel caso in cui si debbano effettuare calcoli utilizzando valori non necessariamente tipizzati (o “eventualmente” non tipizzati) come quelli inviati attraverso un form:

$prezzo = 10;
$n_prodotti = $_POST['qta'];
$totale = $prezzo * (int)$n_prodotti;

Naturalmente, procedure come il dynamic typing potrebbero non rivelarsi ideali nel caso in cui si voglia evitare di dover testare il casting delle variabili, ma qui rientriamo in un limite dovuto all’architettura del linguaggio che può essere risolto soltanto avendo il pieno controllo a priori dei tipi gestiti.

Post correlati
I più letti del mese
Tematiche