PHP: ripulire input utente
05/11/2012Sanitarizzare, bruttissima espressione di traduzione letterale dell'inglese sanitize, normalmente utilizzata per indicare il processo di pulizia a cui si sottopone una stringa inserita dall'utente che potrebbe contenere codice maligno e quindi prima della memorizzazione nel database va ripulita da eventuali porzioni di codice insicure contenenti richiami a tag, script etc etc.
Il codice qui portato ad esempio proviene da CSS-TRICKS.
La doppia funzione di ripulitura e sanitazing è questa:
function cleanInput($input) {
$search = array(
'@<script[^>]*?>.*?</script>@si', // Strip out javascript
'@<[\/\!]*?[^<>]*?>@si', // Strip out HTML tags
'@<style[^>]*?>.*?</style>@siU', // Strip style tags properly
'@<![\s\S]*?--[ \t\n\r]*>@' // Strip multi-line comments
);
$output = preg_replace($search, '', $input);
return $output;
}
function sanitize($input) {
if (is_array($input)) {
foreach($input as $var=>$val) {
$output[$var] = sanitize($val);
}
}
else {
if (get_magic_quotes_gpc()) {
$input = stripslashes($input);
}
$input = cleanInput($input);
$output = mysql_real_escape_string($input);
}
return $output;
}