Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: gAb1 en 16 Abril 2016, 01:39 am



Título: regex para filtrar caracteres especiales en jquery
Publicado por: gAb1 en 16 Abril 2016, 01:39 am
Quiero crear un regex que me permita filtrar caracteres no deseados (para evitar ataques xss, php y sql) en jquery. Para ello estoy probando dos plugins: filter_input (https://github.com/northern/Input-Filter-JS) y keyfilter (https://github.com/akzhan/jquery-keyfilter) pero ambos me dan error al usar el regex que necesito.

Los caracteres a permitir serian alphanumericos (a-zA-z0-9), espacios (a ser posible solo 1 entre caracteres) y los siguientes: ". : , - + ¿? ¡! ' ñ ç" y vocales con acentos y dieresis (pero no por separado).

He encontrado varios regex pero en cuanto intento añadir algún caracter de los arriba mencionados me da un error y no lo toma, ocurre con ambos plugins...

La idea es permitir elegir que caracteres especiales usar para cada input y luego usarlo en php con preg_replace por si se manipula el javascript.

¿Alguna idea de por qué esos dos plugins no aceptan regex con esos carácteres?

Tampoco es que tenga mucha idea de regex, a lo mejor lo estoy haciendo mal, pero otros los he sacado de respuestas que están funcionando, no sé...

Gracias!


Título: Re: regex para filtrar caracteres especiales en jquery
Publicado por: _Enko en 20 Abril 2016, 00:21 am
Hola, veo un inconveniente con validacion de caracteres en javascript.
Si bien el usuario normal no podrá ingresar esos caracteres, van a estar bloqueados, pero que pasa si alguien simplemente inspecciona tu formulario y elimina la parte de js que no le gusta?
Ese tipo de validación debería estar hecho del lado del servidor tambien.

Esta pagina tiene una lista de regex mas comunes:
http://www.regexlib.com/

Saludos.




Título: Re: regex para filtrar caracteres especiales en jquery
Publicado por: gAb1 en 20 Abril 2016, 16:28 pm
Si, por supuesto, olvidé mencionarlo. También tengo los mismos regex validando que el string coincida en php.

Esto es simplemente para que el usuario sepa que dichos carácteres no están permitidos y que si hackea su lado de cliente, al enviar el formulario dará error y tendrá que empezar de nuevo. Ya que es un formulario bastante extenso, que no se diga que no he avisado  ;D

Sobre el plugin, no tiene porque bloquear, también puede mostrar un mensaje de error diciendo que nose permiten dichos carácteres y que no deje enviar.

Edito: Creo que mejor voy a utilizar el atributo pattern de html5 y con jquery mostrar un error en caso de no validar.