Filtrado de Texto
Pablo Baeza
gulusm en terra.cl
Lun Dic 29 18:33:32 CLST 2003
Buenas,
Quisiera comentar sobre el tema del filtrado de una cadena de texto,
para esto dare el siguiente caso,
Supongamos que tenemos un formulario en nuestra pagina, dentro de este
un <textarea> que recibira un texto ingresado por el usuario el cual
sera previsualizado y despues sera enviado a la base de datos (mysql
especificamente).
Bueno lo que estoy haciendo es :
1.- Recibo el post con $_GET['texto']
2.- valido dicho texto, $textoFinal = validar($_GET['texto'])
3.- previsualizo $textoFinal con la opcion de volver a editarlo en un
<textarea>.
4.- Si se edita vuelvo al paso [ 1 ] si no voy al paso [ 5 ]
5.- Envio $textoFinal a la base de datos
Bueno, mi pregunta esta en el paso [ 2 ] especificamente en la funcion
validar($cadena),
En dicha funcion tengo lo siguiente,
function validar($cadena)
{
$cadena = str_replace(chr(39),"'",$cadena);
// chr(39) es una comilla simple '
$cadena = str_replace(chr(34),""",$cadena);
// chr(34) es una comilla doble "
$cadena = str_replace(chr(92),"\",$cadena);
// chr(92) es una barra invertida \
$cadena = strip_tags($cadena, $tags);
// strip_tags, quito los tags html y php posibles
$cadena = trim($cadena);
// trim, quito los espacio del principio y final de la cadena
return $cadena;
}
Ahora me gustaria que me dieran algunas recomendaciones, sugerencias o
posibles fallas que pueda tener.
En realidad esto lo estoy haciendo como un metodo de SEGURIDAD para
evitar entradas erroneas y maliciosas a la base de datos (sql injection
creo que se llaman), bastara con esas validaciones o faltara por ejemplo
la comilla invertida -> ` o algun otro caracter malicioso.
Bueno y lo ultimo que queria comentar es que strip_tags no me gusta como
trabaja simplemente por que me corta la cadena al encontrar tags
incompletos o erroneos ademas que me quita todo lo que esta entre los
signos < y >, por ejemplo <estenoesuntag> siendo que este no es un tag.
Alguna sugerencia?
Bueno saludos, que se encuentren bien y pasen una bonita noche de año
nuevo.
Bye.