with tutorial sistema manejo ion_auth in_group auth autentificacion php codeigniter authentication

php - tutorial - sistema login codeigniter



¿Cómo debo elegir una biblioteca de autenticación para CodeIgniter? (11)

Actualización (14 de mayo de 2010):

Resulta que el desarrollador ruso Ilya Konyukhov recogió el guante después de leer esto y creó una nueva biblioteca de autenticación para CI basada en DX Auth, siguiendo las recomendaciones y los requisitos a continuación.

Y el resultado de la Autenticación del tanque es la respuesta a la pregunta del OP. Voy a arriesgarme aquí y llamaré a Tank Auth la mejor biblioteca de autenticación para CodeIgniter disponible en la actualidad. Es una biblioteca sólida que tiene todas las características que necesitas y ninguna de las que tienes:

Autenticación del tanque

Pros

  • Con todas las funciones
  • Huella magra (20 archivos) considerando el conjunto de características
  • Muy buena documentacion
  • Diseño de base de datos simple y elegante (solo 4 tablas DB)
  • La mayoría de las funciones son opcionales y fáciles de configurar
  • Soporte de archivos de idioma
  • reCAPTCHA apoyado
  • Se engancha al sistema de validación de CI
  • Correos de activación
  • Inicie sesión con correo electrónico, nombre de usuario o ambos (configurable)
  • Cuentas no activadas caducan automáticamente
  • Manejo de errores simple pero efectivo
  • Usa phpass para hash (y también hash codifica los códigos de inicio de sesión automático en la base de datos)
  • No utiliza preguntas de seguridad.
  • La separación de los datos del usuario y del perfil es muy agradable
  • Modelo de seguridad muy razonable para intentos de inicio de sesión fallidos (buena protección contra bots y ataques DoS)

(Menor) Contras

  • Los códigos perdidos de la contraseña no están hash en DB
  • Incluye un CAPTCHA nativo (pobre), que es bueno para aquellos que no quieren depender del servicio reCAPTCHA (propiedad de Google), pero en realidad no es lo suficientemente seguro
  • Documentación en línea muy escasa (problema menor aquí, ya que el código está bien documentado e intuitivo)

Descarga Tank Auth aquí

Respuesta original:

También he implementado el mío (actualmente, aproximadamente el 80% se realiza después de unas pocas semanas de trabajo). Probé a todos los otros primero; FreakAuth Light, DX Auth, Redux, SimpleLogin, SimpleLoginSecure, pc_user, Fresh Powered y algunos más. Ninguno de ellos estaba a la par, IMO, ya que carecían de características básicas, intrínsecamente SEGURAS, o demasiado hinchadas para mi gusto.

En realidad, hice un resumen detallado de todas las bibliotecas de autenticación para CodeIgniter cuando las estaba probando (justo después de Año Nuevo). FWIW, lo compartiré contigo:

DX Auth

Pros

  • Muy completo ofrecido
  • Huella mediana (más de 25 archivos), pero logra sentirse bastante delgado
  • Excelente documentación, aunque algo está en inglés ligeramente roto.
  • Soporte de archivos de idioma
  • reCAPTCHA apoyado
  • Se engancha al sistema de validación de CI
  • Correos de activación
  • Cuentas no activadas caducan automáticamente
  • Sugiere grc.com para sales (no está mal para un PRNG)
  • Prohibición con cadenas de ''motivo'' almacenadas
  • Manejo de errores simple pero efectivo

Contras

  • Solo permite a los usuarios "restablecer" una contraseña perdida (en lugar de dejar que elijan una nueva tras la reactivación)
  • Modelo de pseudoevento de Homebrew: buena intención, pero pierde la marca
  • Dos campos de contraseña en la tabla de usuario, mal estilo
  • Utiliza dos tablas de usuario separadas (una para usuarios "temporales": ambigua y redundante)
  • Utiliza hashing md5 potencialmente inseguro.
  • Los intentos fallidos de inicio de sesión solo se almacenan por IP, no por nombre de usuario - ¡inseguro!
  • La clave de inicio de sesión automático no está hash en la base de datos, ¡es prácticamente tan insegura como el almacenamiento de contraseñas en texto simple!
  • El sistema de roles es un completo desorden: la función is_admin con nombres de roles codificados, is_role un completo desorden, check_uri_permissions es un desorden, toda la tabla de permisos es una mala idea (un URI puede cambiar y hacer que las páginas no estén protegidas; los permisos siempre deben almacenarse exactamente donde está la lógica sensible). ¡Factor decisivo!
  • Incluye un nativo (pobre) CAPTCHA
  • La interfaz de la función reCAPTCHA está desordenada.

FreakAuth Light

Pros

  • Muy completo ofrecido
  • Principalmente código bastante bien documentado.
  • La separación de los datos del usuario y del perfil es un buen toque
  • Se engancha al sistema de validación de CI
  • Correos de activación
  • Soporte de archivos de idioma
  • Desarrollado activamente

Contras

  • Se siente un poco hinchado (más de 50 archivos)
  • Y sin embargo, carece de inicio de sesión automático de cookies (!)
  • No admite inicios de sesión con nombre de usuario y correo electrónico
  • Parece tener problemas con los caracteres UTF-8
  • Requiere mucha carga automática (que impide el rendimiento)
  • Archivo de configuración mal micromanaged
  • Separación terrible del controlador de vista, con mucha lógica de programa en las vistas y salida codificada en los controladores. ¡Factor decisivo!
  • Código HTML pobre en las vistas incluidas.
  • Incluye CAPTCHA de calidad inferior.
  • La depuración comentada hace eco en todas partes
  • Fuerza una estructura de carpetas específica
  • Fuerza una biblioteca Ajax específica (se puede cambiar, pero no debería estar allí en primer lugar)
  • No hay límite máximo en los intentos de inicio de sesión - ¡MUY inseguro! ¡Factor decisivo!
  • Secuestro de validación de formularios.
  • Utiliza hashing md5 potencialmente inseguro.

pc_user

Pros

  • Buen conjunto de características por su pequeña huella
  • Ligero, sin hinchazón (3 archivos)
  • Inicio de sesión de cookies automático elegante
  • Viene con implementación de prueba opcional (buen toque)

Contras

  • Utiliza la antigua sintaxis de la base de datos de CI (menos segura)
  • No se engancha al sistema de validación de CI
  • Sistema de estado (rol) poco intuitivo (índices al revés - impráctico)
  • Utiliza el hashing sha1 potencialmente inseguro.

Fresco accionado

Pros

  • Huella pequeña (6 archivos)

Contras

  • Carece de muchas características esenciales. ¡Factor decisivo!
  • Todo está codificado. ¡Factor decisivo!

Redux / Ion Auth

De acuerdo con la wiki de CodeIgniter , Redux ha sido descontinuado, pero la bifurcación Ion Auth se está fortaleciendo: https://github.com/benedmunds/CodeIgniter-Ion-Auth

Ion Auth es una biblioteca bien presentada sin que sea demasiado pesada o poco avanzada. En la mayoría de los casos, su conjunto de características cubrirá con creces los requisitos de un proyecto.

Pros

  • Ligero y fácil de integrar con CodeIgniter
  • Soporta el envío de correos electrónicos directamente desde la biblioteca.
  • Bien documentado en línea y buena comunidad activa de dev / usuario
  • Fácil de implementar en un proyecto.

Contras

  • Esquema DB más complejo que algunos otros
  • La documentación carece de detalle en algunas áreas.

SimpleLoginSecure

Pros

  • Huella minúscula (4 archivos)
  • Minimalista, absolutamente nada inflable.
  • Usa phpass para hashing (excelente)

Contras

  • Solo iniciar sesión, cerrar sesión, crear y eliminar
  • Carece de muchas características esenciales. ¡Factor decisivo!
  • Más de un punto de partida que una biblioteca.

No me malinterpretes: no pretendo faltar al respeto a ninguna de las bibliotecas anteriores; Estoy muy impresionado con lo que sus desarrolladores han logrado y hasta qué punto han llegado cada uno de ellos, y no estoy por encima de reutilizar parte de su código para construir el mío. Lo que estoy diciendo es que, a veces en estos proyectos, el enfoque se desplaza desde lo esencial "necesidad de tener" (como las prácticas de seguridad estrictas) hasta lo más suave "de lo mejor", y eso es lo que espero remediar .

Por lo tanto: de vuelta a lo básico.

Autenticación para CodeIgniter hecho a la derecha

Aquí está mi lista MÍNIMA requerida de características de una biblioteca de autenticación. También sucede que es un subconjunto de la lista de características de mi propia biblioteca;)

  1. Huella pequeña con implementación de prueba opcional
  2. Documentación completa
  3. No se requiere carga automática. Carga justo a tiempo de bibliotecas para el rendimiento
  4. Soporte de archivos de idioma; sin cadenas rígidas
  5. reCAPTCHA soportado pero opcional
  6. Generación de sal aleatoria VERDADERA recomendada (por ejemplo, utilizando random.org o random.irb.hr)
  7. Complementos opcionales para admitir el inicio de sesión de terceros (OpenID, Facebook Connect, cuenta de Google, etc.)
  8. Inicie sesión con un nombre de usuario o correo electrónico
  9. Separación de datos de usuario y perfil.
  10. Correos electrónicos para activación y pérdida de contraseñas.
  11. Característica de inicio de sesión de cookie automática
  12. Phpass configurable para hash (¡correctamente salado por supuesto!)
  13. Hashing de contraseñas
  14. Hashing de códigos autologin
  15. Hashing de códigos de contraseña perdidos
  16. Se engancha al sistema de validación de CI
  17. NO hay preguntas de seguridad!
  18. Política de contraseñas seguras del lado del servidor, con validador del lado del cliente (Javascript) opcional
  19. Número máximo forzado de intentos de inicio de sesión fallidos con contramedidas de MEJORES PRÁCTICAS contra ataques de DoS y de diccionario.
  20. Todo el acceso a la base de datos se realiza a través de declaraciones preparadas (enlazadas)

Nota: esos últimos puntos no son una exageración de alta seguridad que no necesita para su aplicación web. Si una biblioteca de autenticación no cumple con estos estándares de seguridad al 100%, ¡NO LO USE!

Ejemplos recientes de alto perfil de codificadores irresponsables que los dejaron fuera de su software: # 17 es cómo el correo electrónico de AOL de Sarah Palin fue pirateado durante la campaña presidencial; una desagradable combinación de # 18 y # 19 fue la culpable recientemente cuando las cuentas de Twitter de Britney Spears, Barack Obama, Fox News y otros fueron hackeadas; y el número 20 solo es cómo los hackers chinos lograron robar 9 millones de elementos de información personal de más de 70.000 sitios web coreanos en un truco automatizado en 2008.

Estos ataques no son cirugía cerebral. Si deja sus puertas traseras abiertas de par en par, no debe engañarse con una falsa sensación de seguridad atornillando el frente. Además, si tiene la suficiente seriedad con respecto a la codificación para elegir un marco de mejores prácticas como CodeIgniter, se debe al menos obtener las medidas de seguridad más básicas correctamente.

<rant>

Básicamente, así es como es: no me importa si una biblioteca de autenticación ofrece un montón de funciones, administración avanzada de roles, compatibilidad con PHP4, fuentes CAPTCHA bonitas, tablas de países, paneles de administración completos, timbres y silbidos, si la biblioteca realmente lo hace Mi sitio es menos seguro al no seguir las mejores prácticas. Es un paquete de autenticación ; Necesita hacer UNA cosa bien: la autenticación. Si no lo hace, en realidad está haciendo más daño que bien.

</rant>

/ Jens Roland

Veo que hay unos pocos . ¿Cuáles son mantenidas y fáciles de usar? ¿Cuáles son sus pros y sus contras?


Estoy probando Ion_Auth y lo aprecio, por cierto ...

SimpleLoginSecure hace que la autenticación sea simple y segura.


Ion_Auth supera a tank_auth principalmente por dos razones, roles de usuario y documentación, estos dos faltan en tank_auth.


Ion_auth! Se ve muy prometedora y pequeña huella! Me gusta..

Ion-Auth


La Autenticación del tanque se ve bien, pero la documentación es solo una explicación de una página de cómo instalarlo, más un resumen rápido de cada archivo PHP. Al menos eso es todo lo que encontré después de un montón de Google. Quizás lo que la gente quiere decir arriba cuando dice que Tank Auth está bien documentado es que el código está bien comentado. Eso es algo bueno, pero diferente a la documentación. Hubiera sido bueno tener alguna documentación sobre cómo integrar las características de Tank Auth con su código existente.


Me he encontrado con Flexi Auth ( http://haseydesign.com/flexi-auth/ ). Parece muy prometedor, y he empezado a usarlo. Tiene características maravillosas. Se integra completamente con CI y viene con dos archivos de biblioteca diferentes, en el que uno está muy cargado con todas las funciones y el otro solo contiene las validaciones.

Una de las mejores es que el miembro recién registrado obtiene acceso temporal por un tiempo determinado en el sitio, hasta que hace clic en el enlace de su correo electrónico y lo activa.


Quizás encuentres a Redux satisfaciendo tus necesidades. No es una exageración y viene repleto de características simples que la mayoría de nosotros requeriríamos. Los desarrolladores y contribuyentes fueron muy estrictos con respecto a qué código se contribuyó.

Esta es la pagina oficial.


Soy el desarrollador de Redux Auth y algunos de los problemas que mencionaste se han corregido en la versión 2 beta. También puede descargarlo del sitio web oficial con una aplicación de muestra.

  • Requiere carga automática (que impide el rendimiento)
  • Utiliza el concepto inherentemente inseguro de "preguntas de seguridad". ¡Factor decisivo!

Las preguntas de seguridad ahora no se utilizan y se ha implementado un sistema de contraseña olvidado más simple.

  • Los tipos de devolución son una combinación de códigos de error verdadero, falso, de error y éxito.

Esto se solucionó en la versión 2 y devuelve valores booleanos. Odiaba el hodgepodge tanto como tú.

  • No se engancha al sistema de validación de CI

La aplicación de muestra utiliza el sistema de validación de CI.

  • No permite que un usuario reenvíe un código de ''contraseña perdida''

Trabajo en progreso

También implementé algunas otras funciones, como las vistas de correo electrónico, esto te da la opción de poder usar los ayudantes de CodeIgniter en tus correos electrónicos.

Sigue siendo un trabajo en progreso, así que si tiene más sugerencias, por favor, continúe.

-Palomitas de maiz

Ps: Gracias por recomendar Redux.


También eche un vistazo a BackendPro

En última instancia, probablemente terminará escribiendo algo personalizado, pero no hay nada de malo en tomar prestados los conceptos de DX Auth, Freak Auth, BackendPro, etc.

Mi experiencia con las aplicaciones empaquetadas es que son específicas de ciertas estructuras y he tenido problemas para integrarlas en mis propias aplicaciones sin necesidad de hacks, luego, si el paquete previo tiene una actualización, tengo que migrarlas.

También uso Smarty y ADOdb en mi código de CI, así que no importa lo que siempre termine haciendo cambios importantes en el código.


Tenga en cuenta que la "lista completa" de Jens Roland no incluye roles de usuario. Si está interesado en asignar diferentes roles de usuario (como admin / user o admin / editor / user), estas bibliotecas lo permiten:

  • Ion_Auth (reescritura de Redux)
  • Redux
  • Backend Pro

Tank_Auth (# 1 arriba en la lista de Jens) no tiene roles de usuario. Me doy cuenta de que no es exactamente parte de la autenticación, pero desde

  • La autenticación y la administración de roles se manejan al cargar la página.
  • Ambos implican seguridad
  • La misma tabla / modelo se puede utilizar para ambos.
  • Ambos pueden configurarse para cargarse en el constructor del controlador (o incluso cargarse automáticamente)

Tiene mucho sentido tener una biblioteca para manejar ambas, si la necesita. Estoy cambiando a Ion_Auth desde Tank_Auth debido a esto.