Sanado de inputs! (metodo rapido)

Para la gente que es muy “paranoica” y quiere sanar una input, sea GET, POST, SESSION, REQUEST, etc. Hay una simple función que nos ayudaría a solucionar MUCHOS problemas.
Lo que haría es principalmente es borrar definitivamente los caracteres que consideremos inválidos, yo lo hice mediante expresiones regulares, pero se podría hacer manualmente especificando uno por uno (con regexp también..) los caracteres a borrar y usar str_replace().
Mi parámetro es el siguiente:
[^a-zA-Z0-9]
Osea que no borraría (^) las letras minúsculas (a-z), mayúsculas (A-Z) y los números (0-9). Eso quiere decir que a cualquier carácter introducido que no se encuentre especificado sera borrado.
Este es un script de ejemplo:
<html>
<head></head>
<body>
<?
function sanar($str){
return preg_replace(”/[^a-zA-Z0-9]/”, “”, $str);
}$xss=sanar($_GET[’xss’]);
echo “<center>$xss</center>”;
?>
</body>
</html>
Como pueden ver, una función tan simple y aplicable, nos podría ayudar mucho. Si ponemos lo siguiente: http://localhost/reemplazar.php?xss=”;!–”<XSS>=&{()} , nos daría el siguiente resultado (codigo fuente):
<html>
<head></head>
<body>
<center>XSS</center></body>
</html>
Pero, como dije antes, esto se podría hacer “manualmente”. Con la misma funcion, modificada:
<html>
<head></head>
<body>
<?
function sanar($str){$caracts=array(
‘/\&/’=>’&’,
‘/</’=>’<’,
“/>/”=>’>’,
‘/”/’=>’”‘,
“/’/”=>’'’,
“/%/”=>’%’,
‘/\(/’=>’(’,
‘/\)/’=>’)’,
‘/\+/’=>’+’,
“/-/”=>’-’,
‘/\\/’=>’\\\\’,
);
return preg_replace(array_keys($caracts),array_values($caracts),$str);
}$xss=sanar($_GET[’xss’]);
echo “<center>$xss</center>”;
?>
</body>
</html>
Lo que en el código fuente se vería así:
<html>
<head></head>
<body>
\'\';!--\”<XSS>={()}#
</body>
</html>
Si quieren otras opciones, pueden checkear la web de OWASP, donde tienen un proyecto llamado “PHP Filters” (aunque hay para otros lenguajes, pero no desarrollados), donde hacen un paso por todos los filtros necesarios para cada tipo de ataque, usando las bien conocidas Expresiones Regulares. El paquete PHP de filtros lo pueden encontrar ACA.
