2010-05-19 9 views
6

tengo un formulario de inicio de sesión, que está en login.php. ¡Después de la autorización, muevo el cliente a un archivo .php! Entonces, de seguir dos métodos, ¿cuál es mejor?obtener o sesión?

  1. puedo enviar información de usuario aboud id e.t.c por GET
  2. puedo usar SESSION - lo que es más preferido s para este

?

y dos palabras sobre por qué hago esta pregunta. lo que escucho en alguna parte que SESSION s no son buenas método de programación, y no es sugerida para usarlas en este tipo de situaciones ...

gracias

+0

¿Qué es mejor para ** ** lo que? –

+0

@Col.Metralla solo para almacenar datos de usuario – Simon

+0

gracias a todos ustedes, entiendo – Simon

Respuesta

7

Las sesiones son de hecho la solución preferida. No puede confiar en los datos enviados en la cadena de consulta ($ _GET, $ _POST, $ _COOKIE, etc.) porque el usuario puede cambiarlos, pero puede confiar en que nadie ha alterado los datos de $ _SESSION dado que $ _SESSION es almacenado en el servidor.

+1

sí - la mejor manera es guardar el ID de usuario en su sesión, y si es posible, guardar id hash (aes) - pero no es realmente importante. Porque si lo guarda en su sesión, el usuario no puede cambiarlo. y si él cierra la sesión. Si usa $ _GET, puede cambiar "? Id = 1232" (por ejemplo) con "? Id = 1", y este puede ser un administrador. Lo mismo en cookie y en Post ... – ahmet2106

+0

@ ahmet2106: AES es un esquema de encriptación, no una función de hash. Para hashing, use SHA-512 o similar. –

+0

@Felix King, fue mi culpa, estaba encriptando :) No hash ^^ Sí por hash él puede usar sha u otro ... – ahmet2106

1

No hay nada inherentemente malo de sesiones. De hecho, en esta situación, almacenaría el ID de usuario en la sesión en lugar de pasarlo en la URL. Será mucho más limpio y más profesional, en mi humilde opinión. Almacenar información trivial en la sesión está bien.

1

$_SESSION puede tener sus defectos, pero usar $_GET para este tipo de cosas es aún peor.

1

Si entiendo bien la pregunta, entonces ninguna. Use POST para esto en su lugar y luego cree SESSION al iniciar sesión.

Digamos que el usuario viene a index.php donde está el formulario de inicio de sesión. Él completa la información y pulsa "iniciar sesión". Envíe los datos al login.php usando POST. Si el nombre de usuario, la contraseña y cualquier otra información es correcta, cree SESSION y redirija el usuario a otro lugar.

0

Usaría SESSION si desea almacenar cierta información, que se basa en el éxito de la autenticación. Los datos en las variables GET y POST son demasiado fáciles de manipular.

0

Si tiene que decidir entre $ _SESSION y $ _GET, entonces, para cosas seguras, use $ _SESSION. Todo lo que el usuario puede hacer con las sesiones es destruirlas (eliminando la cookie PHPSESSID), pero el usuario no puede manipularlas.

Si tiene que pasar información una vez, $ _SESSION es muy bueno. Puede almacenar algunos datos en la variable $ _SESSION, punto de cambio a través de PHP (por lo que el usuario no puede bloquear la secuencia de comandos mediante la desactivación de JavaScript. Sólo tiene que utilizar header('Location: '.$path);), utilizar el contenido $ _SESSION en la otra página y el usuario no tiene intervalo de tiempo en que podría destruir la sesión. Esto es seguro.

+1

No, no siempre es seguro. El usuario puede negarse a seguir el encabezado de ubicación y no hacer la segunda solicitud, por lo que no siempre puede confiar en que el usuario haga la segunda solicitud después de un encabezado de ubicación (puede confiar en él si es un usuario legítimo, pero es los usuarios ilegítimos a quienes tratamos de protegernos en primer lugar). –

0

La forma más segura sería usar SESSIONS porque eso significaría que solo se almacena un identificador de token | en el lado del cliente, y todos los datos representados por el identificador de token | se almacenan en el servidor. Además, puede establecer el tiempo de vencimiento para las sesiones, eso lo haría más seguro.

0

SESSION es la mejor solución. Lo que hace más seguro uno .User no puede alterar ninguna de sus datos

Cuestiones relacionadas