2010-08-27 11 views
7

He estado desarrollando un CMS basado en PHP para usar en el sitio web de mi equipo de robótica. Claro, hay muchas otras plataformas, pero ¿qué hay de divertido en eso?sistema de inicio de sesión de PHP seguro?

Con toda seriedad, sin embargo, recibimos puntos extra por poder decir que hicimos algo más que crear una plantilla para Drupal o WP. Esto no está relacionado, pero me gustaría poder lanzar el CMS como FOSS algún día, pero definitivamente tendrá que madurar y ser más seguro. Pero yo divago.

He llegado al punto en el desarrollo de este sistema donde necesito un sistema de inicio de sesión. Esto ha causado más frustración de lo que esperaba. Puedo ser meticuloso cuando se trata de seguridad, y esto no es una gran excepción. El problema es que sé cómo ocuparme de la seguridad de la base de datos (no confío en la entrada del usuario, almacene contraseñas como un hash con una sal al azar, etc.), pero me falta el conocimiento para hacer un buen sistema cliente-servidor. Algunas preguntas al respecto: ¿Qué tan seguro sería usar variables de sesión? ¿Cómo se implementarían las variables de sesión correctamente en este sentido? ¿Debería regenerarse la cookie de sesión en cada página vista? Usted renuncia a mucha seguridad cuando usa cookies para mantener al usuario conectado durante cualquier cantidad de tiempo, pero ¿cuáles son las mejores prácticas para implementar este tipo de sistema?

Un buen tutorial sobre este tema sería de gran ayuda, también.

Gracias por su tiempo.

Respuesta

3

Si quiere aprender más sobre el problema/solución, en lugar de copiar/pegar código de otras personas, consulte este artículo.

http://jaspan.com/improved_persistent_login_cookie_best_practice

excelente recurso para la gestión de cookies persistente, aunque no le da el código, que le da una buena puesta a tierra/concepto para crear un sistema de acceso más seguro.

Por supuesto, el sistema de inicio de sesión de PHP más seguro es uno que no tiene funcionalidad de inicio de sesión persistente, ya que las credenciales de usuario nunca se almacenan en ningún lugar aparte del servidor.

+0

¡Guau, leí ese artículo y esa página es realmente interesante! +1 Por cierto, debe señalar que la solución real al problema está cerca del final, pero es bueno leer la información antes de que entienda por qué es más segura. – Kranu

+0

Usted acaba de hacerlo por mí;) la primera parte del artículo pasa por los conceptos básicos de un artículo escrito en otro lugar, y luego la persona se extiende sobre él más adelante en este artículo. – Stoosh

+0

El enlace proporcionado NO es una mejora. Lea http://stackoverflow.com/questions/549/the-definitive-guide-to-forms-based-website-authentication/477579#477579 para obtener más información. Lamentablemente, mi voto no se puede deshacer – Nullius

1

erm, explicando todos los problemas que llenarían un libro de buen tamaño. No importa las soluciones para ellos.

Los lectores versión resumida del resumen ejecutivo abreviada de la guía del idiota es:

  • uso de SSL
  • asegúrese de que el seguro y httponly banderas se establecen para las cookies de sesión (ir a leer sobre el robo de sesiones, ataques MITM)
  • generar el identificador de sesión al iniciar la sesión (ir a leer sobre la fijación de sesión) y de cierre de sesión
  • aplicar una capa de abstracción sobre el sistema de autenticación y autorización
  • aplicar una capa sperate de abstracción sobre cada uno de estos dos componentes
  • ponen en práctica una verificación de autorización por página
  • trabajo de antemano si es necesario particionar sus datos en términos de visiblity de/acceso
Cuestiones relacionadas