2011-01-20 23 views
8

Durante el tiempo que he pasado descansando de aprender cómo PHP es compatible con Unicode, he estado ahondando en hacer que mis cookies "Recordarme" sean un poco más seguras. Sin embargo, hay algunas cosas que no entiendo y algunas de mis reflexiones me gustaría recibir algunas sugerencias y opiniones.PHP: ¿Me recuerdas y seguridad?

1) ¿Hay algún método para adoptar una función de "Recordarme" que no implique cookies? Es curioso ya que existen evidentes fallas de seguridad en el almacenamiento de cookies de autenticación. No es que no haya riesgos de seguridad en casi todo.

2) Como no estoy trabajando con un banco o con información "muy sensible", ¿es necesario exigirles a los usuarios que ingresen sus contraseñas para las áreas más "de alto perfil"? Parece que recordar el inicio de sesión sería un desperdicio si simplemente les pedimos que esencialmente inicien sesión de todos modos, dos minutos después.

3) ¿Cuál es el mejor método para almacenar una cookie de autenticación (aparte de "nada")? Actualmente he codificado esa área para establecer un solo token en la cookie (hash usando time(), su agente de usuario, remote_addr y un salt-sha256). Cuando dicho usuario regresa, comprueba la tabla de "sesiones" para el token, luego compara IP con IP para iniciar sesión. Si el token está allí pero la IP no coincide, silenciosamente desconecta la cookie y les pide que inicien sesión como si ellos no tuvieran uno

Gracias de nuevo a todos.

+0

debe volver a utilizar un marco de autenticación existente siempre que sea posible, porque, en realidad, es complejo. Por ejemplo, eche un vistazo a https://github.com/delight-im/PHP-Auth. Necesitará algo de almacenamiento persistente en el lado del cliente para lo que está tratando de hacer, y por lo tanto las cookies son la opción ideal. – caw

Respuesta

6
  1. Esencialmente, no. Requiere algún tipo de almacenamiento en el lado del cliente; no tiene forma de saber quién es un cliente sin una cookie (o similar, como el almacenamiento HTML 5 del lado del cliente).

  2. Eso es un compromiso que debe decidir. Se debe requerir un mínimo, la contraseña anterior o alguna otra forma de confirmación (¿correo electrónico?) Para cambiarla a una nueva.

  3. No puede protegerse absolutamente contra el robo de cookies y la suplantación posterior a menos que cifre todas las comunicaciones. Ese es el único método seguro. Claro, asociar un IP, agente de usuario, etc. a la cookie puede ser útil, pero es más fácil y mucho más seguro confiar en el cifrado. (no he entendido bien el punto aquí - lo que es importante en el valor de la cookie es que es al azar, por lo que debe cambiar su método generacional a ser menos predecible)

+0

1) No lo creía, pero pensé que podría haber valido la pena preguntar de todos modos por posibles ideas radicales. ;) 2) Definitivamente requeriría la contraseña anterior para actualizar cualquier información como correo electrónico, nombre de usuario, contraseña, etc. Principalmente me refería a cosas como comprar cualquier cosa (es un sitio de juegos para que los usuarios tengan opciones como esa), comerciar con otros usuarios, ese tipo de cosas. 3) En realidad, me estaba refiriendo al sistema de almacenamiento/verificación (la forma en que funciona según mi descripción inicial) en contraposición al cifrado o al cifrado. – Zydeco

+0

@Zyd Ah, pensé que estabas diciendo que aceptaste solo una determinada cookie si coincidían el IP, el agente de usuario, etc. El único requisito de la cookie es que sea lo suficientemente aleatorio para que no pueda adivinarse. El método que está utilizando no es muy bueno porque es un poco predecible, aunque la sal, si es lo suficientemente grande, podría compensar esto. En cualquier caso, deberías cambiarlo. – Artefacto

+0

Para ser más claro: use HTTPS y establezca el indicador 'secure' en las cookies, que evita la mayoría de las formas de secuestro de cookies (a menos que la máquina del usuario se vea comprometida). – deceze

Cuestiones relacionadas