Veo que hay algunos . ¿Cuáles son mantenidos y fáciles de usar? ¿Cuáles son sus pros y sus contras?
Veo que hay algunos . ¿Cuáles son mantenidos y fáciles de usar? ¿Cuáles son sus pros y sus contras?
Respuestas:
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 requisitos a continuación.
Y el Tank Auth resultante se parece a 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 hoy. Es una biblioteca sólida como una roca que tiene todas las características que necesita y ninguna de las que no necesita:
Pros
- Con todas las funciones
- Huella magra (20 archivos) considerando el conjunto de características
- Muy buena documentación
- Diseño de base de datos simple y elegante (solo 4 tablas DB)
- La mayoría de las funciones son opcionales y se configuran fácilmente
- Soporte de archivos de idioma
- reCAPTCHA compatible
- Se conecta al sistema de validación de CI
- Correos electrónicos de activación
- Inicie sesión con correo electrónico, nombre de usuario o ambos (configurable)
- Las cuentas no activadas caducan automáticamente
- Manejo de errores simple pero efectivo
- Utiliza phpass para hashing (y también códigos hash de inicio de sesión automático en la base de datos)
- No utiliza preguntas de seguridad.
- La separación de los datos de usuario y perfil es muy agradable.
- Modelo de seguridad muy razonable en torno a intentos fallidos de inicio de sesión (buena protección contra bots y ataques DoS)
(Menor) Contras
- Los códigos de contraseña perdidos no se codifican en DB
- Incluye un CAPTCHA nativo (pobre), que es bueno para aquellos que no quieren depender del servicio reCAPTCHA (propiedad de Google), pero realmente no es lo suficientemente seguro
- Documentación en línea muy escasa (problema menor aquí, ya que el código está muy bien documentado e intuitivo)
Respuesta original:
También he implementado el mío (actualmente aproximadamente el 80% lo hace después de algunas semanas de trabajo). Probé todos los demás primero; FreakAuth Light, DX Auth, Redux, SimpleLogin, SimpleLoginSecure, pc_user, Fresh Powered y algunos más. Ninguno de ellos estaba a la altura, en mi opinión, o carecían de características básicas, inherentemente inseguras 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:
Pros
- Muy completo
- Huella mediana (más de 25 archivos), pero logra sentirse bastante delgada
- Excelente documentación, aunque algunos están en inglés ligeramente roto
- Soporte de archivos de idioma
- reCAPTCHA compatible
- Se conecta al sistema de validación de CI
- Correos electrónicos de activación
- Las cuentas no activadas caducan automáticamente
- Sugiere grc.com para sales (no está mal para un PRNG)
- Prohibición con cadenas de 'razones' almacenadas
- Manejo de errores simple pero efectivo
Contras
- Solo permite a los usuarios 'restablecer' una contraseña perdida (en lugar de permitirles elegir una nueva al reactivarla)
- Modelo de pseudoeventos casero - buena intención, pero falla 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 hash 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á cifrada en la base de datos, ¡prácticamente tan insegura como almacenar contraseñas en texto sin cifrar!
- El sistema de roles es un desastre completo: la función is_admin con nombres de roles codificados, is_role es un desastre completo, check_uri_permissions es un desastre, 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 CAPTCHA nativo (pobre)
- La interfaz de la función reCAPTCHA es desordenada
Pros
- Muy completo
- En su mayoría código bastante bien documentado
- La separación de los datos de usuario y perfil es un buen toque
- Se conecta al sistema de validación de CI
- Correos electrónicos 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 (lo que impide el rendimiento)
- Archivo de configuración mal administrado
- Terrible separación entre el controlador y la vista, con mucha lógica de programa en las vistas y salida codificada en los controladores. ¡Factor decisivo!
- Mal código HTML en las vistas incluidas
- Incluye CAPTCHA deficiente
- La depuración comentada hace eco en todas partes
- Fuerza una estructura de carpeta específica
- Fuerza una biblioteca Ajax específica (se puede cambiar, pero no debería estar allí en primer lugar)
- Sin límite máximo en los intentos de inicio de sesión, ¡MUY inseguro! ¡Factor decisivo!
- Secuestro de validación de formulario
- Utiliza hash md5 potencialmente inseguro
Pros
- Buen conjunto de características por su pequeña huella
- Ligero, sin hinchazón (3 archivos)
- Elegante inicio de sesión automático de cookies
- 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 conecta al sistema de validación de CI
- Sistema de estado (rol) poco intuitivo (índices al revés - poco práctico)
- Utiliza hash sha1 potencialmente inseguro
Pros
- Tamaño reducido (6 archivos)
Contras
- Carece de muchas características esenciales. ¡Factor decisivo!
- Todo está codificado. ¡Factor decisivo!
De acuerdo con la wiki de CodeIgniter , Redux ha sido descontinuado, pero la bifurcación de Ion Auth se está fortaleciendo: https://github.com/benedmunds/CodeIgniter-Ion-Auth
Ion Auth es una biblioteca bien presentada sin ser demasiado pesada o poco avanzada. En la mayoría de los casos, su conjunto de características satisfará con creces los requisitos de un proyecto.
Pros
- Ligero y fácil de integrar con CodeIgniter
- Admite el envío de correos electrónicos directamente desde la biblioteca
- Bien documentado en línea y buena comunidad activa de desarrollo / usuario
- Simple de implementar en un proyecto
Contras
- Esquema de DB más complejo que otros.
- La documentación carece de detalles en algunas áreas.
Pros
- Pequeña huella (4 archivos)
- Minimalista, absolutamente sin hinchazón
- Utiliza 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 punto de partida que una biblioteca
No me malinterpreten: no pretendo faltarle el respeto a ninguna de las bibliotecas anteriores; Estoy muy impresionado con lo que han logrado sus desarrolladores y qué tan lejos han llegado cada uno de ellos, y no estoy dispuesto a reutilizar parte de su código para construir el mío. Lo que digo es que, a veces en estos proyectos, el enfoque cambia de las necesidades esenciales (como las prácticas de seguridad estrictas) a las cosas más agradables, y eso es lo que espero remediar. .
Por lo tanto: volver a lo básico.
Aquí está mi lista MINIMAL requerida de características de una biblioteca de autenticación. También resulta ser un subconjunto de la lista de características de mi propia biblioteca;)
- Tamaño reducido con implementación de prueba opcional
- Documentación completa
- No se requiere carga automática. Carga de bibliotecas justo a tiempo para el rendimiento
- Soporte de archivos de idioma; sin cadenas codificadas
- reCAPTCHA compatible pero opcional
- Generación de sal aleatoria VERDADERA recomendada (por ejemplo, usando random.org o random.irb.hr)
- Complementos opcionales para admitir el inicio de sesión de terceros (OpenID, Facebook Connect, cuenta de Google, etc.)
- Inicie sesión con nombre de usuario o correo electrónico
- Separación de datos de usuario y perfil.
- Correos electrónicos para activación y contraseñas perdidas
- Función automática de inicio de sesión de cookies
- Phpass configurable para hash (¡salado adecuadamente, por supuesto!)
- Hashing de contraseñas
- Hashing de códigos de inicio de sesión automático
- Hashing de códigos de contraseña perdidos
- Se conecta al sistema de validación de CI
- NO preguntas de seguridad!
- Política de contraseña segura implementada del lado del servidor, con el validador opcional del lado del cliente (Javascript)
- ¡Número máximo forzado de intentos fallidos de inicio de sesión con MEJORES PRÁCTICAS contramedidas contra los ataques de diccionario y DoS!
- ¡Todo el acceso a la base de datos se realiza mediante declaraciones preparadas (vinculadas)!
Nota: esos últimos puntos no son excesos de seguridad súper alta 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 LA 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 Sarah Palin fue pirateado durante la campaña presidencial; una combinación desagradable de # 18 y # 19 fueron los culpables recientemente cuando las cuentas de Twitter de Britney Spears, Barack Obama, Fox News y otros fueron pirateadas; y solo el número 20 es cómo los piratas informáticos chinos lograron robar 9 millones de elementos de información personal de más de 70,000 sitios web coreanos en un hack automatizado en 2008.
Estos ataques no son cirugía cerebral. Si deja las puertas traseras abiertas de par en par, no debe engañarse con una falsa sensación de seguridad al atornillar la parte delantera. Además, si usted es lo suficientemente serio acerca de la codificación para elegir un marco de mejores prácticas como CodeIgniter, se lo debe a usted mismo al menos para obtener las medidas de seguridad más básicas bien hechas.
<rant>
Básicamente, así es como es: no me importa si una biblioteca de autenticación ofrece un montón de características, administración avanzada de roles, compatibilidad PHP4, bonitas fuentes CAPTCHA, tablas de países, paneles de administración completos, campanas y silbatos, si la biblioteca realmente hace mi sitio es menos seguro al no seguir las mejores prácticas. Es un paquete de autenticación ; necesita hacer UNA cosa bien: Autenticación. Si no logra hacer que , en realidad está haciendo más daño que bien.
</rant>
/ Jens Roland
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 le permiten:
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
Tiene mucho sentido tener una biblioteca para manejar ambas, si la necesita. Me estoy cambiando a Ion_Auth desde Tank_Auth debido a esto.
Ion_auth! ¡Se ve muy prometedor y ocupa poco espacio! Me gusta..
Soy el desarrollador de Redux Auth y algunos de los problemas que mencionaste se han solucionado en la versión 2 beta. Puede descargar esto del sitio web oficial con una aplicación de muestra también.
- 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 usan y se ha implementado un sistema de contraseña olvidado más simple.
- Los tipos de retorno son una mezcla de códigos de verdadero, falso, error y éxito
Esto se solucionó en la versión 2 y devuelve valores booleanos. Odiaba la mezcolanza tanto como tú.
- No se conecta 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 características como las vistas de correo electrónico, esto le da la opción de poder usar los ayudantes de CodeIgniter en sus correos electrónicos.
Todavía es un trabajo en progreso, así que si tienes más sugerencias, sigue haciéndolo.
-Palomitas de maiz
PD: Gracias por recomendar Redux.
Me he encontrado con Flexi Auth ( http://haseydesign.com/flexi-auth/ ). Se ve muy prometedor, y he comenzado a usarlo. Tiene características maravillosas. Se integra completamente con CI y viene con dos archivos de biblioteca diferentes, en los cuales uno está muy cargado con todas las funciones y el otro contiene solo las validaciones.
Una de las mejores es que el miembro recién registrado obtiene acceso temporal durante un período de tiempo determinado en el sitio, hasta que haga clic en el enlace de su correo electrónico y se active.
Quizás encuentre Redux que satisfaga sus necesidades. No es excesivo y viene repleto de características básicas que la mayoría de nosotros necesitaríamos. El desarrollador y los colaboradores fueron muy estrictos sobre qué código se contribuyó.
Esta es la página oficial.
Yo uso una versión personalizada de DX Auth . Me pareció simple de usar, extremadamente fácil de modificar y tiene una guía de usuario (con excelentes ejemplos) que es muy similar a la de Code Igniter.
También eche un vistazo a BackendPro
En última instancia, probablemente terminarás escribiendo algo personalizado, pero no hay nada de malo en tomar prestados 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 requerir hacks, entonces si el pre-paquete tiene una actualización, tengo que migrarlas.
También uso Smarty y ADOdb en mi código CI, así que no importa lo que siempre termine haciendo cambios importantes en el código.
Tank Auth se ve bien, pero la documentación es solo una explicación de una página sobre cómo instalar, más un desglose rápido de cada archivo PHP. Al menos eso es todo lo que encontré después de mucho googlear. Quizás lo que la gente quiere decir arriba cuando dicen 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.
Estoy probando Ion_Auth y lo aprecio, por cierto ...
SimpleLoginSecure Hace que la autenticación sea simple y segura.