Comment choisir une bibliothèque d'authentification pour CodeIgniter? [fermé]

je vois quelques . Ceux qui sont maintenus et facile à utiliser? Quels sont leurs avantages et leurs inconvénients?

380
demandé sur Shog9 2008-12-07 02:31:03

11 réponses

Mise À Jour (14 Mai 2010):

il s'avère que le développeur russe Ilya Konyukhov a relevé le défi après avoir lu ceci et créé une nouvelle bibliothèque auth pour CI basée sur DX Auth, en suivant les recommandations et les exigences ci-dessous.

et le résultat Tank Auth ressemble à la réponse à la question de L'OP. Je vais prendre des risques et appeler Tank Auth le meilleur. 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 du bloat vous ne l'avez pas:

Tank Auth

Pros

  • Complet
  • Lean empreinte (20 dossiers) en considérant l'ensemble des fonctionnalités
  • très bonne documentation
  • Simple et élégant conception de base de données (seulement 4 DB tables)
  • la plupart des fonctionnalités sont optionnelles et facilement configurées
  • la Langue de fichier de soutien
  • reCAPTCHA supported
  • Crochets en CI du système de validation
  • e-mails D'Activation
  • Se connecter avec e-mail, Nom d'utilisateur ou les deux (configurable)
  • comptes non activés à expiration automatique
  • Simple mais efficace de gestion des erreurs
  • utilise le phpass pour le hachage (et aussi les codes autologin dans le DB)
  • N'utilise pas de questions de sécurité
  • la séparation des données utilisateur et profil est très agréable
  • modèle de sécurité très raisonnable autour des tentatives de connexion ratées (bonne protection contre les attaques bots et DoS)

(Mineur) Cons

  • mot de passe Perdu les codes ne sont pas hachés dans la bd
  • inclut un CAPTCHA natif (pauvre), ce qui est agréable pour ceux qui ne veulent pas dépendre du service (Google-owned) reCAPTCHA, mais il est vraiment pas assez sûr
  • très peu de documentation en ligne (problème mineur ici, car le code est bien documenté et intuitif)

Télécharger Réservoir Auth ici


réponse originale:

j'ai mis en place mon propre aussi bien (actuellement environ 80% fait après quelques semaines de travail). J'ai essayé tous les autres d'abord; FreakAuth Light, DX Auth, Redux, SimpleLogin, SimpleLoginSecure, pc_user, Fresh Powered, et quelques autres. Aucun D'eux n'était à la hauteur, IMO, soit ils manquaient de caractéristiques de base, d'insécurité inhérente, soit ils étaient trop gonflés à mon goût.

en fait, j'ai fait 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:

DX Auth

Pros

  • Très complet
  • empreinte moyenne (25 + fichiers), mais parvient à se sentir assez mince
  • excellente documentation, bien que certains soit en anglais légèrement cassé
  • la Langue de fichier de soutien
  • reCAPTCHA supported
  • Crochets en CI du système de validation
  • e-mails D'Activation
  • comptes non activés à expiration automatique
  • suggère grc.com pour les sels (non mauvais pour un PRNG)
  • Bannir avec stockées "raison" chaînes
  • traitement Simple et efficace des erreurs

Cons

  • permet seulement aux utilisateurs de "réinitialiser" un mot de passe perdu (plutôt que de les laisser choisir un nouveau lors de la réactivation)
  • Homebrew pseudo-modèle d'événement - une bonne intention, mais rate la marque
  • deux champs de mot de passe dans la table d'utilisateur, mauvais style
  • utilise deux tables d'utilisateurs distinctes (une pour les utilisateurs "temporaires" - ambiguë et redondante)
  • utilise un système de hachage md5 potentiellement dangereux
  • tentatives de connexion échouées uniquement stockées par IP, pas par nom d'utilisateur-dangereux!
  • clé Autologin Non hachée dans la base de données - pratiquement aussi dangereux que de stocker des mots de passe en clair!
  • le système de rôle est un désordre complet: la fonction is_admin avec des noms de rôle codés, is_role un désordre complet, check_uri_permissions est un désordre, la table des permissions entière est une mauvaise idée (un URI peut Modifier et rendre les pages non protégées; les permissions doivent toujours être stockées exactement où la logique sensible est). Dealbreaker!
  • comprend un CAPTCHA (pauvre) autochtone
  • reCAPTCHA interface de la fonction est en désordre

FreakAuth Light

Pros

  • Très complet
  • plutôt bien code documenté
  • la séparation des données utilisateur et profil est une bonne chose
  • Crochets en CI du système de validation
  • e-mails D'Activation
  • la Langue de fichier de soutien
  • activement développé

Cons

  • se Sent un peu gonflé (50+ fichiers)
  • , Et pourtant il manque automatique cookie de connexion (!)
  • ne supporte pas les logins avec à la fois le nom d'utilisateur et le courriel
  • semble avoir des problèmes avec les caractères UTF-8
  • nécessite beaucoup d'autoloading (entravant la performance)
  • fichier de configuration mal géré
  • Terrible séparation Vue-Contrôleur, avec beaucoup de logique de programme dans les vues et la sortie codée en dur dans les contrôleurs. Dealbreaker!
  • code HTML pauvre dans les vues incluses
  • Includes substandard CAPTCHA
  • commente debug echoes everywhere
  • force une structure de chemise spécifique
  • force une bibliothèque Ajax spécifique (peut être commuté, mais ne devrait pas être là en premier lieu)
  • Pas de limite max. sur les tentatives de connexion - TRÈS dangereuse! Dealbreaker!
  • Détourne forme validation
  • utilise un système de hachage md5 potentiellement dangereux

pc_user

Pros

  • Bon ensemble de fonctionnalités pour son petit encombrement
  • Léger, pas de ballonnement (3 fichiers)
  • Élégant automatique des cookies de connexion
  • est livré avec l'implémentation de test optionnelle (nice touch)

Cons

  • utilise l'ancienne syntaxe de la base de données CI (moins sûre)
  • N'a pas de crochet dans la CI de validation du système
  • un Peu pas intuitif statut (rôle) système (index à l'envers - impossible)
  • utilise des produits de fraisage sha1 potentiellement dangereux

Frais Alimenté

Pros

  • petite empreinte (6 fichiers)

Cons

  • N'a pas beaucoup de caractéristiques essentielles. Dealbreaker!
  • tout est codé. Dealbreaker!

Redux / Ion Auth

selon le CodeIgniter wiki , Redux a été discontinué, mais L'autorisation fork va fort: https://github.com/benedmunds/CodeIgniter-Ion-Auth

Ion Auth est une bibliothèque bien décrite sans qu'elle soit trop lourde ou sous Avancé. Dans la plupart des cas, son ensemble de caractéristiques sera plus que répondre aux exigences d'un projet.

Pros

  • léger et simple à intégrer avec CodeIgniter
  • supporte l'envoi de courriels directement de la bibliothèque
  • Bien documenté en ligne et de la bonne active dev/communauté d'utilisateurs de
  • Simple à mettre en œuvre dans un projet

Cons

  • schéma DB plus complexe que certains autres
  • de la Documentation, manque de détails dans certains domaines

SimpleLoginSecure

Pros

  • minuscule empreinte (4 fichiers)
  • Minimaliste, absolument pas de dilatation
  • utilise phpass pour le hachage (excellent)

Cons

  • connexion, déconnexion, création et suppression seulement
  • N'a pas beaucoup de caractéristiques essentielles. Dealbreaker!
  • plus 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 jusqu'où chacun d'eux est venu, et je ne suis pas contre la réutilisation de certains de leur code pour construire le mien. Ce que je dis, c'est que, parfois, dans ces projets, l'accent se déplace de l'essentiel " besoin de nantis (comme dur pratiques en matière de sécurité) plus doux 'nice-to-haves', et c'est ce que j'espère remédier.

donc: retour aux sources.

authentification pour CodeIgniter fait right

voici ma liste minimale des fonctionnalités d'une bibliothèque d'authentification. Il arrive aussi d'être un sous-ensemble de ma propre bibliothèque de la liste des nouveautés ;)

  1. minuscule empreinte au sol avec mise en œuvre d'essai facultative
  2. documentation complète
  3. pas d'autoloading nécessaire. Chargement juste-à-temps des bibliothèques pour la performance
  4. la Langue de fichier de soutien; pas de chaînes codées en dur
  5. reCAPTCHA pris en charge, mais facultative
  6. production aléatoire de sel véritable recommandée (par exemple en utilisant random.org ou au hasard.irb.hr)
  7. add-ons optionnels pour soutenir la connexion de tiers (OpenID, Facebook Connecter, votre Compte Google, etc.)
  8. Se connecter en utilisant un nom d'utilisateur ou par courriel
  9. séparation des données d'utilisateur et de profil
  10. Emails pour l'activation et les mots de passe perdus
  11. fonction de connexion automatique des cookies
  12. Phpass Configurable pour le hachage (bien salé bien sûr!)
  13. hachage de mots de passe
  14. hachage de codes autologine
  15. hachage des codes de mot de passe perdus
  16. Crochets en CI du système de validation
  17. pas de questions de sécurité!
  18. Forcée forte stratégie de mot de passe côté serveur, avec, en option, côté client (Javascript) validateur
  19. Forcée nombre maximum de tentatives de connexion avec "151930920 des MEILLEURES PRATIQUES" contre-mesures à l'encontre à la fois dictionnaire et les attaques de DoS!
  20. tous les accès à la base de données se font par des déclarations préparées (reliées)!

Remarque: ces derniers points sont pas super-haute sécurité overkill que vous n'avez pas besoin pour votre application web. si une bibliothèque d'authentification ne respecte pas ces normes de sécurité à 100%, ne l'utilisez pas!

exemples récents très médiatisés de codeurs irresponsables qui les ont laissés en dehors 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 a été le coupable récemment lorsque les comptes Twitter de Britney Spears, Barack Obama, Fox News et d'autres ont été piratés; et #20 est la seule 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 piratage automatisé en 2008.

ces attaques ne sont pas une opération du cerveau. Si vous laissez votre dos les portes grandes ouvertes, vous ne devriez pas vous tromper dans un faux sentiment de sécurité en boulonnant l'avant. De plus, si vous êtes suffisamment sérieux au sujet du codage pour choisir un cadre de pratiques exemplaires comme CodeIgniter, vous devez à vous-même d'au moins obtenir le plus de base mesures de sécurité fait correctement.


<151950920"

en gros, voici comment c'est: Je m'en fous si une bibliothèque auth offre un tas de fonctionnalités, gestion avancée des rôles, compatibilité PHP4, polices de caractères pretty CAPTCHA, tables de pays, panneaux administratifs complets, cloches et sifflets -- si la bibliothèque fait réellement mon site moins sûr en ne Suivant pas les meilleures pratiques. C'est un paquet authentification ; il doit faire une chose juste: L'authentification. Si elle ne fait pas que , elle fait plus de mal que de bien.

/ Jens Roland

454
répondu Jens Roland 2015-07-07 21:49:34

notez que la" liste complète " par Jens Roland n'inclut pas les rôles d'utilisateur. Si vous êtes intéressé à assigner différents rôles d'utilisateur( comme admin / user ou admin / editor / user), ces bibliothèques l'autorisent:

  • Ion_Auth (réécriture de Redux)
  • Redux
  • Backend Pro

Tank_Auth (#1 ci-dessus dans la liste de Jens) n'a pas de rôle d'utilisateur. Je me rends compte que ça ne fait pas vraiment partie de authentification, mais depuis

  • l'authentification et la gestion des rôles sont toutes deux gérées à la charge de la page
  • les deux concernent la sécurité
  • le même tableau/modèle peut être utilisé pour les deux.
  • les deux peuvent être configurés pour charger dans le constructeur du contrôleur (ou même autoload)

Cela fait beaucoup de sens d'avoir une bibliothèque pour gérer les deux, si vous en avez besoin. Je suis passer à Ion_Auth de Tank_Auth à cause de ça.

54
répondu Burton Kent 2010-11-12 17:26:11

Ion_auth! Semble très prometteur et une petite empreinte! J'aime..

http://github.com/benedmunds/CodeIgniter-Ion-Auth

35
répondu Marko 2010-03-10 20:09:35

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 télécharger ceci du site web offcial avec un exemple d'application aussi.

  • nécessite un autoloading (entravant l'exécution)
  • utilise le concept intrinsèquement dangereux de "questions de sécurité". Dealbreaker!

questions de sécurité ne sont plus utilisées et un un système plus simple de mot de passe oublié a été mis en place.

  • types de Retour sont un peu d'un méli-mélo de vrai, de faux, d'erreur et codes de réussite

cela a été corrigé dans la version 2 et renvoie des valeurs booléennes. Je détestais le hodgepodge autant que toi.

  • N'a pas de crochet dans la CI de validation du système

L'application d'échantillonnage utilise le système de validation de L'IC.

  • ne permet pas à un utilisateur de renvoyer un code 'mot de passe perdu'

travaux en cours

j'ai également mis en œuvre d'autres fonctionnalités telles que les vues e-mail, ce qui vous donne le choix de pouvoir utiliser les helpers CodeIgniter dans vos e-mails.

C'est encore un travail en cours donc si ont plus les suggestions s'il vous plaît continuez.

- Popcorn

Ps: merci de recommander Redux.

29
répondu Svish 2009-05-05 06:12:39

peut-être que vous trouverez Redux correspondant à vos besoins. C'est pas exagéré, et est livré uniquement avec les caractéristiques de la plupart d'entre nous exiger. Le dev et les contributeurs étaient très stricts sur le code qui a été fourni.

C'est la page officielle

12
répondu Filip Dupanović 2008-12-10 09:54:56

J'ai rencontré Flexi Auth ( http://haseydesign.com/flexi-auth / ). Il a l'air très prometteur, et j'ai commencé à l'utiliser. Il a des caractéristiques merveilleuses. S'intègre complètement avec CI, et est livré avec deux fichiers de bibliothèque différents, dans lequel l'un est très lourd chargé 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 période donnée sur le site, jusqu'à ce qu'ils cliquent sur le lien de leur email et activent.

12
répondu Suthan Bala 2013-10-30 20:08:46

Ion_Auth Bat tank_auth principalement pour deux raisons, les rôles d'utilisateur et la documentation, ces deux sont absents de tank_auth.

7
répondu nedu 2010-10-27 08:25:38

j'utilise une version personnalisée de DX Auth . Je l'ai trouvé simple à utiliser, extrêmement facile à modifier et il a un guide de l'utilisateur (avec de grands exemples) qui est très similaire à Code Igniter.

5
répondu Jelani Harris 2008-12-10 18:08:31

regardez aussi BackendPro

finalement, vous finirez probablement par écrire quelque chose de personnalisé, mais il n'y a rien de mal à emprunter des concepts de Dx Auth, Freak Auth, BackendPro, etc.

mon expérience avec les applications packaged est qu'elles sont spécifiques à certaines structures et j'ai eu des problèmes pour les intégrer dans mes propres applications sans avoir besoin de hacks, alors si le pré-package a une mise à jour, j'ai pour la migration.

J'utilise aussi Smarty et ADOdb dans mon code CI, donc peu importe ce que je finirais toujours par faire des changements de code majeurs.

3
répondu Adam 2008-12-13 02:53:36

Tank Auth semble bon, mais la documentation est juste une explication d'une page sur la façon d'installer, plus un court run-down de chaque fichier PHP. C'est tout ce que j'ai trouvé après avoir cherché sur Google. Peut-être que ce que les gens veulent dire quand ils disent que Tank Auth est bien documenté est que le code est bien commenté. C'est une bonne chose, mais différente de la documentation. Il aurait été agréable d'avoir de la documentation sur la façon d'intégrer les fonctionnalités de Tank Auth avec votre code existant.

2
répondu user1284303 2010-11-21 04:23:33

J'essaie Ion_Auth et j'apprécie, btw...

SimpleLoginSecure Rend l'authentification simple et sûre.

2
répondu Fabiano Shark 2011-02-26 20:16:34