Je vois qu'il y en a quelques-uns . Lesquels sont maintenus et faciles à utiliser? Quels sont leurs avantages et leurs inconvénients?
Je vois qu'il y en a quelques-uns . Lesquels sont maintenus et faciles à utiliser? Quels sont leurs avantages et leurs inconvénients?
Réponses:
Il s'avère que le développeur russe Ilya Konyukhov a récupéré le gant après avoir lu ceci et a créé une nouvelle bibliothèque d'authentification pour CI basée sur DX Auth, en suivant les recommandations et les exigences ci-dessous.
Et le Tank Auth résultant ressemble à la réponse à la question du PO. Je vais me lancer ici et appeler Tank Auth la meilleure bibliothèque d'authentification pour CodeIgniter disponible aujourd'hui. C'est une bibliothèque solide comme le roc qui a toutes les fonctionnalités dont vous avez besoin et aucun des ballonnements que vous n'avez pas:
Avantages
- Complet en vedette
- Empreinte Lean (20 fichiers) compte tenu de l'ensemble des fonctionnalités
- Très bonne documentation
- Conception de base de données simple et élégante (seulement 4 tables DB)
- La plupart des fonctionnalités sont facultatives et faciles à configurer
- Prise en charge des fichiers de langue
- reCAPTCHA pris en charge
- Accroche au système de validation de CI
- E-mails d'activation
- Connectez-vous avec e-mail, nom d'utilisateur ou les deux (configurable)
- Les comptes non activés expirent automatiquement
- Gestion des erreurs simple mais efficace
- Utilise phpass pour le hachage (et hache également les codes d'authentification automatique dans la base de données)
- N'utilise pas de questions de sécurité
- La séparation des données d'utilisateur et de profil est très agréable
- Modèle de sécurité très raisonnable en cas d'échec des tentatives de connexion (bonne protection contre les robots et les attaques DoS)
(Mineur) Contre
- Les codes de mot de passe perdus ne sont pas hachés dans la base de données
- Comprend un CAPTCHA natif (pauvre), ce qui est bien pour ceux qui ne veulent pas dépendre du service reCAPTCHA (appartenant à Google), mais il n'est vraiment pas suffisamment sécurisé
- Documentation en ligne très clairsemée (problème mineur ici, car le code est bien documenté et intuitif)
Réponse originale:
J'ai également implémenté le mien (actuellement 80% environ est fait après quelques semaines de travail). J'ai essayé tous les autres en premier; FreakAuth Light, DX Auth, Redux, SimpleLogin, SimpleLoginSecure, pc_user, Fresh Powered, et quelques autres. Aucun d'entre eux n'était à la hauteur, OMI, soit ils manquaient de fonctionnalités de base, intrinsèquement INsécurisés, ou trop gonflés à mon goût.
En fait, j'ai fait un tour d'horizon détaillé de toutes les bibliothèques d'authentification pour CodeIgniter lorsque je les testais (juste après le Nouvel An). FWIW, je vais le partager avec vous:
Avantages
- Très complet
- Empreinte moyenne (plus de 25 fichiers), mais parvient à se sentir assez mince
- Excellente documentation, bien que certains soient en anglais légèrement cassé
- Prise en charge des fichiers de langue
- reCAPTCHA pris en charge
- Accroche au système de validation de CI
- E-mails d'activation
- Les comptes non activés expirent automatiquement
- Suggère grc.com pour les sels (pas mal pour un PRNG)
- Interdiction avec des chaînes de «raisons» stockées
- Gestion des erreurs simple mais efficace
Les inconvénients
- Permet uniquement aux utilisateurs de «réinitialiser» un mot de passe perdu (plutôt que de les laisser en choisir un nouveau lors de la réactivation)
- Modèle de pseudo-événement Homebrew - bonne intention, mais manque la marque
- Deux champs de mot de passe dans la table utilisateur, mauvais style
- Utilise deux tables d'utilisateurs distinctes (une pour les utilisateurs «temporaires» - ambiguës et redondantes)
- Utilise le hachage md5 potentiellement dangereux
- Les tentatives de connexion ont échoué uniquement stockées par IP, pas par nom d'utilisateur - dangereux!
- La clé d'authentification n'est pas hachée dans la base de données - pratiquement aussi dangereuse que le stockage de mots de passe en texte clair!
- Le système de rôles est un gâchis complet: la fonction is_admin avec des noms de rôle codés en dur, is_role un gâchis complet, check_uri_permissions est un gâchis, toute la table des autorisations est une mauvaise idée (un URI peut changer et rendre les pages non protégées; les autorisations doivent toujours être stockées exactement où se trouve la logique sensible). Dealbreaker!
- Comprend un CAPTCHA natif (pauvre)
- L'interface de la fonction reCAPTCHA est en désordre
Avantages
- Très complet
- Code généralement assez bien documenté
- La séparation des données d'utilisateur et de profil est une belle touche
- Accroche au système de validation de CI
- E-mails d'activation
- Prise en charge des fichiers de langue
- Développé activement
Les inconvénients
- Se sent un peu gonflé (50+ fichiers)
- Et pourtant, il manque une connexion automatique aux cookies (!)
- Ne prend pas en charge les connexions avec le nom d'utilisateur et l'e-mail
- Semble avoir des problèmes avec les caractères UTF-8
- Nécessite beaucoup de chargement automatique (entrave les performances)
- Fichier de configuration mal géré
- Terrible séparation View-Controller, avec beaucoup de logique de programme dans les vues et la sortie codée en dur dans les contrôleurs. Dealbreaker!
- Mauvais code HTML dans les vues incluses
- Comprend CAPTCHA de qualité inférieure
- Le débogage commenté résonne partout
- Force une structure de dossiers spécifique
- Force une bibliothèque Ajax spécifique (peut être changée, mais ne devrait pas être là en premier lieu)
- Aucune limite maximale sur les tentatives de connexion - TRÈS dangereux! Dealbreaker!
- Validation du formulaire de piratage
- Utilise le hachage md5 potentiellement dangereux
Avantages
- Bon ensemble de fonctionnalités pour sa petite empreinte
- Léger, pas de ballonnement (3 fichiers)
- Connexion automatique élégante aux cookies
- Livré avec une implémentation de test facultative (touche agréable)
Les inconvénients
- Utilise l'ancienne syntaxe de la base de données CI (moins sûre)
- Ne se connecte pas au système de validation de CI
- Système de statut (rôle) peu intuitif (index à l'envers - impossible)
- Utilise un hachage de sha1 potentiellement dangereux
Avantages
- Petite empreinte (6 fichiers)
Les inconvénients
- Manque beaucoup de fonctionnalités essentielles. Dealbreaker!
- Tout est codé en dur. Dealbreaker!
Selon le wiki CodeIgniter , Redux a été abandonné, mais la fourche Ion Auth se renforce: https://github.com/benedmunds/CodeIgniter-Ion-Auth
Ion Auth est une bibliothèque bien présentée sans être trop lourde ou insuffisamment avancée. Dans la plupart des cas, son ensemble de fonctionnalités répondra largement aux besoins d'un projet.
Avantages
- Léger et simple à intégrer avec CodeIgniter
- Prend en charge l'envoi d'e-mails directement depuis la bibliothèque
- Bien documenté en ligne et bonne communauté de développeurs / utilisateurs actifs
- Simple à mettre en œuvre dans un projet
Les inconvénients
- Schéma DB plus complexe que certains autres
- La documentation manque de détails dans certains domaines
Avantages
- Petite empreinte (4 fichiers)
- Minimaliste, absolument pas de ballonnement
- Utilise phpass pour le hachage (excellent)
Les inconvénients
- Se connecter, se déconnecter, créer et supprimer uniquement
- Manque beaucoup de fonctionnalités essentielles. Dealbreaker!
- Plus d'un point de départ qu'une bibliothèque
Ne vous méprenez pas: je ne veux pas manquer de respect à l'une des bibliothèques ci-dessus; Je suis très impressionné par ce que leurs développeurs ont accompli et le chemin parcouru par chacun d'eux, et je ne suis pas au-dessus de réutiliser une partie de leur code pour créer le mien. Ce que je dis, c'est que, parfois, dans ces projets, l'accent passe des `` besoins indispensables '' (tels que les pratiques de sécurité difficiles) à des `` sympathiques '' plus doux, et c'est ce que j'espère y remédier. .
Par conséquent: retour aux sources.
Voici ma liste MINIMALE de fonctionnalités requises à partir d'une bibliothèque d'authentification. Il se trouve également qu'il s'agit d'un sous-ensemble de la liste des fonctionnalités de ma propre bibliothèque;)
- Petite empreinte avec implémentation de test en option
- Documentation complète
- Aucun chargement automatique requis. Chargement juste à temps des bibliothèques pour des performances
- Prise en charge des fichiers de langue; pas de chaînes codées en dur
- reCAPTCHA pris en charge mais facultatif
- VRAIE génération de sel aléatoire recommandée (par exemple en utilisant random.org ou random.irb.hr)
- Modules complémentaires en option pour prendre en charge la connexion tierce (OpenID, Facebook Connect, compte Google, etc.)
- Connectez-vous en utilisant un nom d'utilisateur ou un e-mail
- Séparation des données d'utilisateur et de profil
- E-mails d'activation et mots de passe perdus
- Fonction de connexion automatique aux cookies
- Phpass configurable pour le hachage (correctement salé bien sûr!)
- Hachage de mots de passe
- Hachage des codes d'authentification automatique
- Hachage de codes de mot de passe perdus
- Accroche au système de validation de CI
- AUCUNE question de sécurité!
- Stratégie de mot de passe renforcée appliquée côté serveur, avec validateur optionnel côté client (Javascript)
- Nombre maximum de tentatives de connexion ayant échoué avec les contre- mesures BEST PRACTICES contre les attaques par dictionnaire et DoS!
- Tous les accès à la base de données se font via des instructions préparées (liées)!
Remarque: ces derniers points ne sont pas une surpuissance de très haute sécurité dont vous n'avez pas besoin pour votre application Web. Si une bibliothèque d'authentification ne répond pas à 100% à ces normes de sécurité, NE L'UTILISEZ PAS!
Exemples récents très médiatisés de codeurs irresponsables qui les ont laissés hors de leur logiciel: # 17 est la façon dont le courriel AOL de Sarah Palin a été piraté pendant la campagne présidentielle; une combinaison désagréable de # 18 et # 19 était le coupable récemment lorsque les comptes Twitter de Britney Spears, Barack Obama, Fox News et d'autres ont été piratés; et # 20 à lui seul est la façon dont les pirates chinois ont réussi à voler 9 millions d'éléments d'informations personnelles de plus de 70 000 sites Web coréens dans un hack automatisé en 2008.
Ces attaques ne sont pas une chirurgie cérébrale. Si vous laissez vos portes arrière grandes ouvertes, vous ne devriez pas vous leurrer dans un faux sentiment de sécurité en verrouillant l'avant. De plus, si vous êtes suffisamment sérieux au sujet du codage pour choisir un cadre de bonnes pratiques comme CodeIgniter, vous vous devez au moins de bien faire les mesures de sécurité les plus élémentaires .
<rant>
Fondamentalement, voici comment c'est: je ne me soucie pas si une bibliothèque d'authentification offre un tas de fonctionnalités, une gestion avancée des rôles, une compatibilité PHP4, de jolies polices CAPTCHA, des tableaux de pays, des panneaux d'administration complets, des cloches et des sifflets - si la bibliothèque fait réellement mon site est moins sécurisé en ne suivant pas les meilleures pratiques. C'est un package d' authentification ; il doit faire UNE chose correctement: l'authentification. Si elle ne parvient pas à faire cela , il est en train de faire plus de mal que de bien.
</rant>
/ Jens Roland
Notez que la "liste complète" de Jens Roland n'inclut pas les rôles d'utilisateur. Si vous souhaitez attribuer différents rôles d'utilisateur (comme admin / utilisateur ou admin / éditeur / utilisateur), ces bibliothèques le permettent:
Tank_Auth (n ° 1 ci-dessus dans la liste de Jens) n'a pas de rôle d'utilisateur. Je me rends compte que cela ne fait pas exactement partie de l'authentification, mais depuis
Cela fait beaucoup de sens d'avoir une bibliothèque pour gérer les deux, si vous en avez besoin. Je passe à Ion_Auth de Tank_Auth à cause de cela.
Ion_auth! Semble très prometteur et peu encombrant! J'aime..
Je suis le développeur de Redux Auth et certains des problèmes que vous avez mentionnés ont été corrigés dans la version 2 bêta. Vous pouvez également le télécharger sur le site Web officiel avec un exemple d'application.
- Nécessite un chargement automatique (entrave aux performances)
- Utilise le concept intrinsèquement dangereux de «questions de sécurité». Dealbreaker!
Les questions de sécurité ne sont plus utilisées et un système de mot de passe oublié plus simple a été mis en place.
- Les types de retour sont un peu un méli-mélo de codes vrai, faux, d'erreur et de réussite
Ce problème a été corrigé dans la version 2 et renvoie des valeurs booléennes. Je détestais le méli-mélo autant que vous.
- Ne se connecte pas au système de validation de CI
L'exemple d'application utilise le système de validation du CI.
- Ne permet pas à un utilisateur de renvoyer un code de «mot de passe perdu»
Travail en cours
J'ai également implémenté d'autres fonctionnalités telles que les vues par e-mail, cela vous donne le choix de pouvoir utiliser les assistants CodeIgniter dans vos e-mails.
C'est toujours un travail en cours, donc si vous avez d'autres suggestions, n'hésitez pas à les faire venir.
-Pop corn
Ps: Merci d'avoir recommandé Redux.
J'ai rencontré Flexi Auth ( http://haseydesign.com/flexi-auth/ ). Cela semble très prometteur et j'ai commencé à l'utiliser. Il a des fonctionnalités merveilleuses. S'intègre entièrement avec CI et est livré avec deux fichiers de bibliothèque différents, dont l'un est très lourd avec toutes les fonctions et l'autre ne contient que les validations.
L'un des meilleurs est que le membre nouvellement inscrit obtient un accès temporaire pour une durée donnée sur le site, jusqu'à ce qu'il clique sur le lien de son e-mail et l'active.
Peut-être que vous trouveriez Redux adapté à vos besoins. Ce n'est pas exagéré et est livré uniquement avec des fonctionnalités nues que la plupart d'entre nous auraient besoin. Le développeur et les contributeurs ont été très stricts sur le code qui a été contribué.
Ceci est la page officielle
J'utilise une version personnalisée de DX Auth . Je l'ai trouvé simple à utiliser, extrêmement facile à modifier et il a un guide d'utilisation (avec de bons exemples) qui est très similaire à celui de Code Igniter.
Jetez également un œil à BackendPro
En fin de compte, vous finirez probablement par écrire quelque chose de personnalisé, mais il n'y a rien de mal à emprunter les concepts de DX Auth, Freak Auth, BackendPro, etc.
Mon expérience avec les applications packagées est qu'elles sont spécifiques à certaines structures et j'ai eu des problèmes pour les intégrer dans mes propres applications sans nécessiter de piratage, puis si le pré-package a une mise à jour, je dois les migrer.
J'utilise également Smarty et ADOdb dans mon code CI, donc peu importe ce que je finirais toujours par faire des changements de code majeurs.
Tank Auth a l'air bien, mais la documentation n'est qu'une explication d'une page sur la façon d'installer, ainsi qu'une rapide analyse de chaque fichier PHP. Du moins, c'est tout ce que j'ai trouvé après beaucoup de recherches sur Google. Peut-être que ce que les gens veulent dire ci-dessus quand ils disent que Tank Auth est bien documenté, c'est que le code est bien commenté. C'est une bonne chose, mais différente de la documentation. Il aurait été bien d'avoir de la documentation sur la façon d'intégrer les fonctionnalités de Tank Auth avec votre code existant.
J'essaie Ion_Auth et je l'apprécie, btw ...
SimpleLoginSecure Rend l'authentification simple et sécurisée.