Ver Mensaje Individual
  #5 (permalink)  
Antiguo 04/07/2007, 18:30
Avatar de jpinedo
jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Re: Duda de seguridad en select's

Cita:
Iniciado por Carxl Ver Mensaje
Ahora leyendo sobre vulnerabilidades en php, me pregunto esto, es necesario que sabiendo que los datos que componen la fecha vienen de tres select's, valide aùn asì si son nùmeros?. Es que no creo que me puedan "atacar" por medio de select.... o sì????????
Con checkdate() no validas del todo que sean números. Te pongo un ejemplo:
Código PHP:
$mes "12' inyecto comillas y codigo";
$dia 31;
$anyo 2007;

if( 
checkdate($mes$dia$anyo) ){
    echo 
"CORRECTO";

}else{
    echo 
"INCORRECTO";

Como verás, en $mes he puesto una cadena que, al iniciar con un valor numérico, pasa la validación del checkdate() cuando, en teoría, no debería.

Ahora, tú pensarás que es imposible que $mes llegue a tener ese valor, debido a que controlas la entrada con un select. Pero no te confíes tanto. Si alguien quisiera atacarte aprovechando esa vulnerabilidad, enviaría directamente las variables que quiera a través del método POST sin utilizar tu formulario.

Conclusión:
Cuando manejemos datos de formulario (sobretodo si son sensibles):

1.- Controlar entradas vía formulario (como lo haces con el select).
2.- Validar entrada vía JavaScript.
3.- Validar en el servidor vía PHP.

Las dos primeras no garantizan seguridad. Simplemente te ayudan a minimizar los errores que pueda cometer el usuario. La tercera sí te da una capa de seguridad.

Saludos,