2011-02-15 22 views
7

Me pregunto cómo podría proteger mejor las sesiones. He buscado un poco y encuentro muchas respuestas, pero muchas de ellas son demasiado confusas.token de sesión: ¿cómo funciona?

¿Cómo evitar que las sesiones sean secuestradas? He leído mucho sobre "tokens de sesiones" que generas en un formulario, pero realmente no entiendo cuál es su uso. ¿Cómo evita esto el secuestro de la sesión?

Sé que no se guardan cosas como las contraseñas en las sesiones, pero ¿qué se puede almacenar en ellas de forma segura? Permisos (como una variabele de sesión que realiza un seguimiento del nivel de usuario. Cada vez que se abre una página, se comprueba la variabele de la sesión. ¿No es un número determinado, se muestra un mensaje de "acceso denegado")? ¿O cómo manejas esto mejor?

¡Gracias!

+0

posible duplicado de [Prevenir el secuestro de PHP sesison, estas son buenas ideas?] (Http://stackoverflow.com/questions/2917177/prevent-php-sesison-hijack-are-these-good-ideas) – Stephen

Respuesta

7

Básicamente puede almacenar cualquier cosa en la sesión que desee, simplemente se considera la "mejor" práctica para no incluir ninguna información sensible a la seguridad, como contraseñas, en caso de que una capa de seguridad se vea comprometida.

El primer paso para evitar el secuestro de la sesión es no pasar su session_id() a través de la url. Los usuarios son estúpidos y publicarán enlaces en sus blogs con su ID de sesión, lo que básicamente le daría a quien hizo clic en ese enlace acceso a su sesión. Por lo tanto, se recomienda almacenar su id de sesión en la cookie de los usuarios.

Dicho esto, desea filtrar y escapar de todas las entradas del usuario. Si tiene una inyección XSS, y el usuario puede insertar javascript, podrá leer sus cookies sin ningún problema.

Desde allí, generalmente quiere regenerate_session_id() en cualquier acción importante en su sitio web, para evitar session fixation.

Es bastante simple, y eso lo resume todo.

+0

Hola, Gracias por la respuesta. Estoy leyendo un poco más sobre la fijación de sesión en este momento. Pero, ¿qué pasa con el token de sesión que suelo leer? ¿No es esto necesario? – Bv202

+0

Probablemente se esté refiriendo a CSRF (Ver http://shiflett.org/articles/cross-site-request-forgeries) que realmente no tiene nada que ver con el secuestro de sesión. –

+0

El nombre correcto de la función PHP es session_regenerate_id() – Heitor

Cuestiones relacionadas