2011-12-09 43 views
6

¿Cómo puedo aumentar la seguridad de mis sesiones?Seguridad de la sesión Codeigniter

$this->session->userdata('userid') 

He estado arrojando a este pequeño chico malo por mis llamadas a Ajax. Algunos casos que no tengo. Entonces pensé, ¿esto es realmente seguro usando el ID del DOM? ¿Qué pasa si el DOM se cambia para piratear los datos de las cuentas de usuario? Entonces, supongo que cada vez que un usuario hace algo relacionado con su id, solo se deben hacer referencia a las sesiones. ¿Estoy en lo cierto?

referenciados, así:

$this->some_model->do_data_stuff($dataId, $this->session->userdata('userid')); 

luego leí esto:

Mientras que la matriz de datos de sesión almacenada en la cookie del usuario contiene una ID de la sesión, a menos que se almacenan los datos de sesión en una base de datos no hay ninguna forma de validarlo . Para algunas aplicaciones que requieren poca o ninguna seguridad , la validación de ID de sesión puede no ser necesaria, pero si su aplicación requiere seguridad, la validación es obligatoria. De lo contrario, una sesión anterior podría ser restaurada por un usuario que modifique sus cookies. http://codeigniter.com/user_guide/libraries/sessions.html

no voy a ser el almacenamiento de datos financieros, pero no quiero que todos los datos de mi sitio dañado nunca. ¿SO utiliza la validación de la sesión? ¿Cuánta sobrecarga costará esta validación? ¿Cómo se piratearía una sesión? ¿Cuáles son algunas cosas a tener en cuenta con la seguridad de la sesión?

Respuesta

18

El uso de sesiones CodeIgniter con la base de datos va a ser bastante seguro. Simplemente no tiene que confiar en la información que el usuario da. Incluso si está utilizando AJAX, la sesión de CodeIgniter funcionará como cualquier llamada estándar, por lo que la misma seguridad continúa.

Lo que sucede con la sesión de CodeIgniter es que el servidor almacena la cookie, y cada vez que el usuario realiza una acción que cambiaría el contenido de la cookie, primero se compara con la cookie anterior.

Si el usuario cambia el contenido de la cookie de sesión en el navegador, CodeIgniter lo notará en la próxima llamada al servidor, y creará una nueva sesión para el usuario, básicamente lo cerrará.

CodeIgniter realmente no necesita los datos almacenados en la cookie en el navegador del usuario, y siempre y cuando usted está utilizando

$this->session->userdata('userid'); 

vas a obtener los datos del lado del servidor de confianza. El usuario no puede cambiar eso. Además, la cookie se puede encriptar y se debe cifrar. Solo mira en config.php de CodeIgniter.

Existen varias otras protecciones alrededor de los datos de la sesión: el tiempo de espera corto de actualización (generalmente 300 segundos), comprueba si el IP cambió y si el navegador cambió. En otras palabras, en el peor de los casos, la única forma de suplantar los datos de la sesión es tener la misma versión del navegador, tener la misma IP, obtener acceso directo a la computadora para copiar/pegar la cookie y hacer esto dentro de los 5 minutos.

Por lo tanto, ¡cuidado con el hombre sentado a tu lado!

Cuestiones relacionadas