Foros del Web » Programando para Internet » PHP »

Validar datos dinamicos del cliente

Estas en el tema de Validar datos dinamicos del cliente en el foro de PHP en Foros del Web. Hola a todos! Como sabemos se debe validar los datos en el cliente y en el servidor. Sin embargo la cosa se complica al validar ...
  #1 (permalink)  
Antiguo 20/11/2020, 12:40
 
Fecha de Ingreso: octubre-2003
Ubicación: España
Mensajes: 1.066
Antigüedad: 17 años, 1 mes
Puntos: 18
Validar datos dinamicos del cliente

Hola a todos!

Como sabemos se debe validar los datos en el cliente y en el servidor.

Sin embargo la cosa se complica al validar valores dinámicos generados en el cliente, por ejemplo, un select con unos determinados valores generados según determinadas selecciones en cliente, podria ser esto:

<select name="datos">
<option value="2">Texto</option>
<option value="35">Texto</option>
<option value="12">Texto</option>
<option value="40">Texto</option>
</select>

Yo lo que suelo hacer para saber que el usuario no ha cambiado ningún valor de los option (mediante el inspector del navegador) además del valor le paso una especie de "token". Dicho "token" es el resultado de: sha1(id de sesion del cliente + valor select), por tanto queda así (son token inventados):

<select name="datos">
<option value="2|token=4u95or09093e939oe0o">Texto</option>
<option value="35|token=4u95or09ewr093e4e0o">Texto</option>
<option value="12|token=3295or03493e9399ir0w">Texto</option>
<option value="40|token=0995or09ol3e939r8iere">Texto</option>
</select>

¿Es correcto?, ¿Qué opináis?

Gracias!
  #2 (permalink)  
Antiguo 20/11/2020, 15:49
 
Fecha de Ingreso: abril-2011
Mensajes: 138
Antigüedad: 9 años, 7 meses
Puntos: 50
Respuesta: Validar datos dinamicos del cliente

Si el hash lo estás calculando en el cliente, no consigues nada, porque un usuario suficientemente astuto mirará el script y verá qué algoritmo estás usando para generar los hashes. Si el usuario quiere enviar el valor X, simplemente tiene que calcular el hash para dicho valor X.

Es preferible utilizar AJAX en el cliente + $_SESSION en el backend. De esta forma, cada vez que el usuario realice una acción, puedes verificar en el servidor si dicha acción es legal o no, en base a valores previamente almacenados en $_SESSION. Si la acción es legal, añades la información (enviada por el cliente) a $_SESSION y le devuelves al usuario los datos actualizados, si es ilegal le devuelves un mensaje de error.

  #3 (permalink)  
Antiguo 21/11/2020, 08:48
 
Fecha de Ingreso: octubre-2003
Ubicación: España
Mensajes: 1.066
Antigüedad: 17 años, 1 mes
Puntos: 18
Respuesta: Validar datos dinamicos del cliente

El hash lo realizó desde php siempre.

Lo que comentas también es una opción.
  #4 (permalink)  
Antiguo 21/11/2020, 11:15
 
Fecha de Ingreso: abril-2011
Mensajes: 138
Antigüedad: 9 años, 7 meses
Puntos: 50
Respuesta: Validar datos dinamicos del cliente

Cita:
El hash lo realizó desde php siempre.
Entonces está bien tu método.

No obstante, por seguridad, a la hora de calcular el hash (la firma o signature) tienes que añadir un string o salt que el usuario desconozca:

Código:
sha1(id de sesion del cliente + valor select + 'esto_es_un_salt123456')
Si no, se puede llegar a adivinar cómo lo estás calculando.




La zona horaria es GMT -6. Ahora son las 21:25.