martes, 28 de abril de 2015

Recomendaciones al Validar los Datos

Cuando se desarrolla una aplicación web dinámica , en especial si se usan Base de Datos , lo que se suele hacer
es validar la información que se  ingresa , ya sea para evitar ataques informáticos o simplemente porque se requiere que la información ingresada en un INPUT tenga cierto formato.

Creo que uno de los errores que se suele cometer es intentar validar los datos usando tecnologías que funcionan del lado cliente como JAVASCRIPT , también se suele cometer el error de validar los datos en el mismo documento que los envía.

Por ejemplo supongamos que un desarrollador ha desarrollado el  sitio web de una revista online , quien lo contrato tenia en cuenta la opinión de los lectores así que pidió que al final de cada articulo se pueda escribir un comentario , el desarrollador programo un pequeño formulario llamado enviarmensaje.php , con 4 campos y creyo conveniente que todos eran obligatorios pero por pereza o simplemente desconocimiento decidió validar los datos usando JavaScript.

Ahora imagine que un usuario malintencionado quiere tumbar el sitio web y ha pensado que la mejor manera de hacerlo es saturar la base de datos , para ello no se le ocurre mejor idea que escribir comentarios gigantescos con 1000000 caracteres .
Entonces empieza a probar el sistema de comentarios a propósito no escribe nada presiona el botón Enviar y recibe lo siguiente.


El usuario malintencionado se da cuenta de que enviarmensaje.php valida los campos uno a uno decide investigar un poco mas y se fija en el código fuente.


Entonces se entera de la pagina que procesa la informacion (comentario_procesar.php) , sabe que no es necesario cumplir con las condiciones que nos pide  enviarmensaje.php , ya que puede introducir la  información directamente.

Pero supongamos que el desarrollador fue precavido y programo comentario_procesar.php para que solo reciba información de enviarmensaje.php , pues eso también lo podria solucionar el atacante malintencionado simplemente borrando la función que se encarga de validar los datos fncValidarComentario(document.frmComentario)



Después de que el usuario malintencionado logro su objetivo tumbando el sitio web ya que los mecanismos de validación eran débiles , el desarrollador desesperado se comunica con su viejo amigo pidiéndole algunas recomendaciones para la próxima que programe una aplicación similar y yo le recomiendo lo siguiente.

No valides los datos con javascript mejor validalos con PHP a traves de Jquery .
Valida los datos en el mismo documento que los procesa.
Siempre valida la longitud de los campos y los caracteres que puedan contener
Es recomendable usar biliotecas como Validation