Futuraweb, extend you brand online

Magic Quotes si preoccupa di effettuare un escaping dei dati in ingresso. Ma e` sempre conveniente?

Magic Quotes e` un processo che effettua l’escape dell’input ed esegue in sostanza un addslashes sui dati in GET, POST e COOKIE.

Magic Quotes e` possibile abilitarlo o disabilitarlo attraverso una direttiva in php.ini

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = On

ma non e` possibile farlo runtime tramite ini_set().

Inizialmente Magic Quotes era impostato di default su On con notevoli benefici per i neofiti soprattutto per quello che concerne l’sql injection. Nelle ultime versioni di Php invece tale direttiva viene impostata per defaul su Off per questione di convenienza (spesso di deve ricorrere al processo inverso stripslashes per recuperare i dati provenienti da una form per esempio) e per motivi di performance.

Quindi per avere la massima portabilita’ dei nostri lavori e` necessario tener conto che molti hanno ancora configurato Magic Quotes = On e dato che, come detto sopra, non possiamo agire runtime sulla direttiva, ripieghiamo con questa semplice funzione:

<?php
if (get_magic_quotes_gpc()) {
   function stripslashes_deep($value)
   {
       $value = is_array($value) ?
                   array_map('stripslashes_deep', $value) :
                   stripslashes($value);

       return $value;
   }

   $_POST = array_map('stripslashes_deep', $_POST);
   $_GET = array_map('stripslashes_deep', $_GET);
   $_COOKIE = array_map('stripslashes_deep', $_COOKIE);
}
?>

Per approfondire:

http://it2.php.net/manual/en/security.magicquotes.php
http://it2.php.net/manual/it/function.get-magic-quotes-gpc.php

Leave a Reply