Nueva pregunta

Pregunta:

Fecha: 11-02-2015 04:56:20 (En Español)

¿Por qué no sanitiza?[Resuelta]

Saludos, estoy usando FILTER_VALIDATE_REGEXP le paso el $value = "Jose_Delgado6"; y se supone que no debería pasar, debería retornar 0, pero si retorna Jose_Delgado6 , alguien sabe como soluciono?

function checkString($value)
{
	return filter_var($value, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/[A-Za-z]{3,24}/")));
}
Etiquetas: PHP - Pregunta - Sanitización - Seguridad Votos: 0 - Respuestas: 9 - Vistas: 13 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 11-02-2015 06:51:35 Hola Jose, el problema es que esta mal la expresión regular, la correcta sería: "/^[A-Za-z]{3,24}$/"

    Con el ^ indicas que debe empezar con, y con $ indicas que debe terminar con.

    Entonces:

    function checkString($value) {
        return filter_var($value, FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => "/^[A-Za-z]{3,24}$/")));
    }
    
    if(checkString('Jose_Delgado6')){
        echo 'valido';
    }else{
        echo 'no valido';
    }


    Por otro lado, no confundas el termino sanitizar con validar, en este caso no se esta sanitizando, sino validando.

    Espero que mi respuesta te sea de ayuda.

    Saludos y buen código,
    Fernando
      Votos: 2 - Link respuesta
     
  • Fecha: 11-02-2015 07:20:44 Mmm ahora comprendo, por otro lado, osea que aun así me ppodrían inyectar algun codigo malo?, y sanitizar no es lo mismo que validar? para mi parecer hacen lo mismo, o no?   Votos: 0 - Link respuesta
     
  • Fecha: 11-02-2015 08:16:43 Hola Jose, recordemos el concepto.

    Sanitizar es sinonimo de limpiar/desinfectar.

    Validar tan solo implica comparar e informar si es o no valido.

    Un ejemplo de la vida real podría ser la de un vaso vacio requerido para beber agua, cuando lo cojes te preguntas ¿esta limpio?, la repuesta te la dará una validación, lo observarás, lo olerás y finalmente podrás decir dos cosas del vaso, esta limpio o esta sucio (true o false). Si el vaso esta limpio lo usaras para servirte agua (no necesitas sanitizarlo), en el caso de las variables en PHP, si las variables son validas no necesitas sanitizarlas, las usas y punto. Ahora bien, si el vaso esta sucio, podrías descartar el vaso y decir "no puedo beber agua" o podrías sanitizarlo (limpiarlo/desinfectarlo por algun método) y luego usarlo, el vaso santizado es seguro, al igual que tus variables sanitizadas.

    El ejemplo es un poco tonto pero seguramente te clarificará los conceptos.

    Saludos,
    Fernando
      Votos: 1 - Link respuesta
     
  • Fecha: 11-02-2015 08:37:02 Mmm entonces sería primero sanitizarlas y luego validarlas con lo que estoy usando?   Votos: 0 - Link respuesta
     
  • Fecha: 11-02-2015 10:00:05 En lo particular, primero valido, si el dato es invalido no hay nada más que hacer.... devuelvo un mensaje o corto el script, pero si el dato es valido igual sanitizo, por las dudas que la validación falle y me arroje un dato como valido cuando no lo es, conteniendo (por ejemplo) una inyección de código.

    Entonces, para el ejemplo del vaso: verifico si esta limpio, si esta limpio igual lo lavo (lo sanitizo), pero si la validación de si esta o no limpio me arroja que el vaso esta sucio, lo descarto...

    Saludos,
      Votos: 0 - Link respuesta
     
  • Fecha: 11-02-2015 10:25:32 Muy bien, ya comprendí todo esto, y voy a sanitizar luego de validar, Muchas gracias.   Votos: 1 - Link respuesta
     
  • Fecha: 13-02-2015 04:26:07 Una pregunta mas, tengo que sanitizar todas las variables de la pagina o solamente es necesario las variables de los formularios?   Votos: 0 - Link respuesta
     
  • Fecha: 15-02-2015 09:16:49 Hola Jose, solo debes sanitizar los datos que envía el usuario a tu script PHP. Los datos que tu generas en tu script (como resultado de procesos o recuperación de una base de datos) no son necesarios sanitizarlos, porque se supone que son validos.

    El objetivo de sanitizar es limpiar los datos enviados por el usuario.

    Saludos,
    Fernando
      Votos: 0 - Link respuesta
     
  • Fecha: 18-02-2015 09:34:52 Muchas gracias ahora si tengo en claro todo.   Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com