PHP - Validar formulario PHP

   
Vista:
Imágen de perfil de Developer PHP

Validar formulario PHP

Publicado por Developer PHP (40 intervenciones) el 03/12/2015 22:54:07
Hola a todos
He estado investigando como puedo validar que un formulario venga de mi propia web, pero no me ha quedado claro, espero me puedan ayudar
He leído que se pueden utilizar tokens, sesiones o incluso la variable http_referer (nada aconsejable), pero aun asi no me queda del todo claro
Espero me puedan ayudar, gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Validar formulario PHP

Publicado por xve (5520 intervenciones) el 04/12/2015 08:52:30
Hola, una simple manera, es utilizar una variable de sesión... cuando cargas tu formulario, creas una variable de sesión, y cuando el usuario envía dicho formulario, tiene que existir dicha variable de sesión, si, no, quiere decir que no viene de la web, o que lleva mas de 30 minutos con el formulario abierto.

también puedes hacerlo con una cookie.

Para complicarlo un poco mas, en esa variable de sesión o cookie, podrías guardar un numero aleatorio que también se tendría que enviar desde el formulario de manera oculta... Al enviar el formulario, esos valoren tendrían que coincidir.

Te sirve?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Developer PHP

Validar formulario PHP

Publicado por Developer PHP (40 intervenciones) el 04/12/2015 19:03:25
Hola amigo, gracias por la respuesta!!
He intentando esa opción, había investigado y comúnmente se le llama como "token"...
Pero no sé si lo he aplicado mal...
Porque como yo lo he hecho, a final de cuenta el token es una variable más, que se puede manipular
Digamos que tengo ésta estructura

1
2
3
4
5
6
7
8
9
10
/*php*/
$token = /*GENERACION DE TOKEN SEGURO , MEDIANTE ALGUN ALGORITMO DE ENCRIPTACION */;
$_session['token'] = $token;
 
/*html*/
<form action="login.php">
<input type="text" name="email">
<input type="text" name="pass">
<input type="hidden" name="token" value="<?=$token;?>">
</form>

Entonces, al enviar el formulario, verifico que la variable $token coincida con la $_SESSION['token'],
el detalle es que, fácilmente pueden entrar a mi web y copiar el valor del token que se encuentra en el input hidden
y puesto q se ha cargado la página, la $_SESSION['token'] ha sido creada

Esto lo comento porque yo tengo mi sitio con un login, y por ejemplo, intento loguearme desde la pag de facebook (cambiando el action del form y agregando los campos necesarios, en este caso el token) y en efecto, me loguea
Pero visceversa no lo hace... es decir, yo puedo loguearme desde facebook a mi sitio, pero no de mi sitio a fecebook (obviamente jaja)
Entonces, quería saber como validar eso, ya que he leido varias cosas pero aún no me queda del todo claro
Otro punto es, que tan riesgoso es que puedan hacer lo que comento, loguearse desde "x" sitio a mi sitio

Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de VRM

Validar formulario PHP

Publicado por VRM (171 intervenciones) el 05/12/2015 07:32:08
En realidad no quiero comentar nada, sólo seguir el hilo (para que me avise en el correo).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Validar formulario PHP

Publicado por xve (5520 intervenciones) el 05/12/2015 10:05:31
Hola, la manera correcta para no tener ningun problema, que es la que utilizamos es esta:

1.- Cuando el usuario se logea en la web, se genera un token a partir de:
$_SERVER["HTTP_USER_AGENT"] + una cadena definida + id del usuario

2.- Se encripta con AES a 128 bits

3- Esa cadena resultante, se guarda en la base de datos vinculada al usuario. Tiene que ser una tabla vinculada a la de los usarios, ya que recuerda que puede logearse desde distintos navegadores y dispositivos, por lo que tendras que almacenar un token para cada plataforma navegador.
En cada navegador, generas una cookie con su token que puede durar 1 año


Cada vez que el usuario accede a una pagina web:

1.- revisas que tenga la cookie

2.- Si tiene la cookie, puedes hacer dos cosas:
a) desaces la encriptación y verificas que el $_SERVER["HTTP_USER_AGENT"] sea el mismo
b) generas nuevamente el token y la comparas con la cookie

3.- Verificas que coincida con la base de datos y que este activa.


De esta manera, un mismo usuario puede estar logeado en varios dispositivos por un tiempo indefinido

Espero haberme explicado bien, y que se entienda... cualquier duda...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Developer

Validar formulario PHP

Publicado por Developer (40 intervenciones) el 07/12/2015 17:37:03
Hola amigo, gracias por tu respuesta
Sin duda es un método más complejo para validar un login
Muchas gracias!
Te soy sincero, no poseo conocimiento en cookies :p
Las voy a checar y probar sobre de eso,
muchas graacias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar