Las sesiones son significativamente más seguras que, por ejemplo, las cookies. Pero aún es posible robar una sesión y, por lo tanto, el pirata informático tendrá acceso total a lo que esté en esa sesión. Algunas formas de evitar esto son la comprobación de IP (que funciona bastante bien, pero es muy baja fi y, por lo tanto, no es confiable por sí misma) y utiliza un nonce. Normalmente, con un nonce, tiene un "token" por página, de modo que cada página comprueba que el nonce de la última página coincide con lo que ha almacenado.
En cualquiera de los controles de seguridad, hay una pérdida de usabilidad. Si realiza la verificación de IP y el usuario está detrás de un firewall de intranet (o cualquier otra situación que lo cause) que no tenga una IP constante para ese usuario, deberá volver a autenticarse cada vez que pierda su IP. Con un nonce, obtienes la situación divertida de "Hacer clic atrás hará que esta página se rompa".
Pero con una cookie, un hacker puede robar la sesión simplemente mediante el uso de técnicas XSS bastante simples. Si almacena la ID de la sesión del usuario como una cookie, también son vulnerables a esto. Entonces, aunque la sesión solo es penetrable para alguien que puede hacer un hackeo a nivel de servidor (que requiere métodos mucho más sofisticados y, por lo general, cierta cantidad de privilegios, si su servidor es seguro), aún necesitará un nivel adicional de verificación sobre cada solicitud de script. No debe usar cookies y AJAX juntos, ya que esto hace que sea un poco más fácil ir a la ciudad si esa cookie es robada, ya que sus solicitudes de ajax pueden no obtener los controles de seguridad en cada solicitud. Por ejemplo, si la página usa un nonce, pero la página nunca se vuelve a cargar, el script solo puede verificar esa coincidencia. Y si la cookie contiene el método de autenticación, ahora puedo ir a la ciudad haciendo mi maldad utilizando la cookie robada y el agujero AJAX.
Debe tenerse en cuenta que PHP almacena la identificación de la sesión como una cookie. –
+1 ¿Podría explicar más sobre un nonce? posible enlace? – Petrogad
El artículo de wiki sobre nonce es bastante ligero, pero tiene enlaces decentes: http://en.wikipedia.org/wiki/Cryptographic_nonce la idea básica, según tengo entendido, es como un token, pero solo se puede usar una vez (número utilizado una vez). Cada solicitud de página verifica la última pausa y crea una nueva. Entonces, si intento un ataque de fuerza bruta contra su contraseña, recibo una oportunidad, ya que el nonce no coincidirá en la ronda 2. Si robo la sesión y el tiempo de esa página, podría seguir haciendo solicitudes y renovando el contrato hasta usted hace una solicitud que arroja el fósforo nonce. Debido a que vería mi solicitud y mi nonce, actualice ... – Anthony