Controllo input utente [server-side]
- 27 aprile 2005 - 23:14
- Web development
Prevenzione di SQL Injection:
- fare lescape dei caratteri nelle stringhe che compongono le query.
Addslashes: esegue il quoting della stringa anteponendo agli apici singoli(‘),doppi(“),ai backslash(\) e a NUL il carattere backslash (\).
Se la direttiva PHP magic_quotes_gpc è impostata a on allora non è necessario utilizzare addslashes() in quanto è eseguito l’escape su tuti i dati GET, POST, e COOKIE.Alternativamente è possibile utilizzare le funzioni apposite per il database sul quale ci si sta appoggiando, nel caso di mysql è mysql_escape_string().
- sia addslashes() che mysql_escape_string() non eseguono lescape dei caratteri % e _. Tali caratteri possono essere utilizzati allinterno della clausola LIKE di SQL; è quindi oppurtuno eseguire con strtr l’escape.
es. Campo causale: a%
$causale = strtr($_POST[causale], array(‘_’ => ‘\_’, ‘%’ => ‘\%’));
Variabile dopo la sostituzione: a\%
La query contenente $causale verrà quindi eseguita correttamente senza alcun rischio ma va ricordato che se si tratta di una query di insert o di update nel database troveremo i vari backslashes e sarà quindi necessario utilizzare stripslahes() nel caso si desiderino visualizzare i dati.
Altre funzioni utili alla eliminazione o sostituzione di caratteri potenzialmente pericolosi sono str_replace(), preg_replace() o ereg_replace().
Altri accorgimenti:
- eliminazione di tag html e php indesiderati
es.strip_tags($_POST[causale]);
E possibile indicare quali tag non eliminare, specificandoli come secondo argomento.
strip_tags($_POST[causale], ‘<br />’);
Nota: tag non correttamente chiusi o corrotti influenzano tutta la parte della stringa interessata.
1. $_POST[causale]=Rigoni<b spa di Lecco utilizzando strip_tags diventa Rigoni
2. $_POST[causale]=Rigoni<b> spa di Lecco diventa Rigoni spa di Lecco e anche ciò che segue sarà in grassetto.
Pagine: 1 2

