Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] filter_input_array o filter_input y duda con FILTER_SANITIZE

Estas en el tema de filter_input_array o filter_input y duda con FILTER_SANITIZE en el foro de PHP en Foros del Web. Estoy creando un sistema de registro y a la hora de recibir los valores mediante POST he decidido servirme de los filtros de PHP para ...
  #1 (permalink)  
Antiguo 06/06/2014, 04:27
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
filter_input_array o filter_input y duda con FILTER_SANITIZE

Estoy creando un sistema de registro y a la hora de recibir los valores mediante POST he decidido servirme de los filtros de PHP para validar y sanear esos valores.

Con filter_input recojo un valor POST concreto, pero es muy aparatoso filtrar valor por valor, además de engordar el volumen del código considerablemente.

Entonces por otro lado está filter_input_array, que como bien indica filtra todo un array.

El problema está que a la hora de realizar esto

Código PHP:
Ver original
  1. \filter_input_array(INPUT_POST, $_POST);

El propio Netbeans me indica que no es recomendable acceder directamente sobre una supeglobal.

Bueno, si no es recomendable (supongo que por seguridad, aunque no sé exactamente qué seguridad) ¿cómo le indico a filter_input_array que me filtre todos los valores POST recibidos en la clase?

Por otro lado y totalmente relacionado, a la hora de validar un email con FILTER_VALIDATE_EMAIL ¿tiene sentido además utilizar el FILTER_SANITIZE_SPECIAL_CHARS?

Un saludo!
__________________
Ayúdame a hacerlo por mi mismo.
  #2 (permalink)  
Antiguo 06/06/2014, 07:14
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: filter_input_array o filter_input y duda con FILTER_SANITIZE

No debes pasarle el array con los datos ($_POST), si no un array con la definición de los datos (la forma que deben tener):
Código PHP:
Ver original
  1. $post = filter_input_array(INPUT_POST, array(
  2.     'email' => FILTER_VALIDATE_EMAIL,
  3.     'password' => FILTER_DEFAULT,
  4.     'otro_campo_de_tu_form' => FILTER_...
  5. ));

Lo mejor es que leas la documentación para saber cómo funciona concretamente, para que sepas cuando devuelve false o null (false cuando no ha pasado el filtro y null cuando una variable no ha sido definida).

Respecto al segundo punto, de cuando utilizar validate o sanitize, hay un mal concepto y muy generalizado, nunca deberías sanitizar la entrada, jamás!
Qué pasa si mi contraseña es "jdsakdl<sd>sds" (que desde luego, tengo derecho a elegir la contraseña que a mi me dé la gana) y tu antes de compararla con la que tienes en la base de datos me haces un strip_tags o FILTER_SANITIZE_SPECIAL_CHARS? pues que compararás esto: "jdsakdl<sd>sds" (lo que yo he introducido) con esto: "jdsakdlsds" (strip_tags) o esto: "jdsakdllt;sdgt;sds" (FILTER_SANITIZE_SPECIAL_CHARS).

Es decir, deberías sanitizar los datos, convertir las entidades html o eliminar tags sólo cuando vayas a mostrarlos en el navegador, de lo contrario no tiene sentido y estarías trabajando con datos truncados.
  #3 (permalink)  
Antiguo 06/06/2014, 09:02
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: filter_input_array o filter_input y duda con FILTER_SANITIZE

Una explicación magistral! :D gracias!
__________________
Ayúdame a hacerlo por mi mismo.

Etiquetas: registro
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:50.