Ich sehe, dass es einige gibt . Welche sind gepflegt und einfach zu bedienen? Was sind ihre Vor- und Nachteile?
Ich sehe, dass es einige gibt . Welche sind gepflegt und einfach zu bedienen? Was sind ihre Vor- und Nachteile?
Antworten:
Es stellte sich heraus, dass der russische Entwickler Ilya Konyukhov nach dem Lesen den Handschuh aufgegriffen und eine neue Authentifizierungsbibliothek für CI basierend auf DX Auth erstellt hat, die den folgenden Empfehlungen und Anforderungen folgt.
Und die daraus resultierende Tankauthentifizierung scheint die Antwort auf die Frage des OP zu sein. Ich werde hier auf die Nerven gehen und Tank Auth als die beste Authentifizierungsbibliothek für CodeIgniter bezeichnen, die heute verfügbar ist. Es ist eine solide Bibliothek, die alle Funktionen bietet, die Sie benötigen, und keine der Funktionen, die Sie nicht benötigen:
Vorteile
- Voll ausgestattet
- Lean Footprint (20 Dateien) unter Berücksichtigung des Funktionsumfangs
- Sehr gute Dokumentation
- Einfaches und elegantes Datenbankdesign (nur 4 DB-Tabellen)
- Die meisten Funktionen sind optional und einfach zu konfigurieren
- Unterstützung von Sprachdateien
- reCAPTCHA wird unterstützt
- Wird in das Validierungssystem von CI eingebunden
- Aktivierungs-E-Mails
- Login mit E-Mail, Benutzername oder beidem (konfigurierbar)
- Nicht aktivierte Konten verfallen automatisch
- Einfache und dennoch effektive Fehlerbehandlung
- Verwendet phpass zum Hashing (und hasht auch Autologin-Codes in der DB)
- Verwendet keine Sicherheitsfragen
- Die Trennung von Benutzer- und Profildaten ist sehr schön
- Sehr vernünftiges Sicherheitsmodell für fehlgeschlagene Anmeldeversuche (guter Schutz vor Bots und DoS-Angriffen)
(Minor) Cons
- Verlorene Passwortcodes werden in der DB nicht gehasht
- Enthält ein natives (armes) CAPTCHA, das für diejenigen geeignet ist, die nicht auf den (von Google betriebenen) reCAPTCHA-Dienst angewiesen sind, aber nicht sicher genug sind
- Sehr spärliche Online-Dokumentation (kleines Problem hier, da der Code gut dokumentiert und intuitiv ist)
Laden Sie Tank Auth hier herunter
Ursprüngliche Antwort:
Ich habe auch meine eigene implementiert (derzeit ca. 80% nach ein paar Wochen Arbeit erledigt). Ich habe zuerst alle anderen ausprobiert. FreakAuth Light, DX Auth, Redux, SimpleLogin, SimpleLoginSecure, pc_user, Fresh Powered und einige mehr. Keiner von ihnen war auf dem neuesten Stand, IMO, entweder fehlten ihnen grundlegende Funktionen, sie waren von Natur aus unsicher oder für meinen Geschmack zu aufgebläht.
Tatsächlich habe ich alle Authentifizierungsbibliotheken für CodeIgniter detailliert zusammengefasst, als ich sie getestet habe (kurz nach Neujahr). FWIW, ich werde es mit Ihnen teilen:
Vorteile
- Sehr voll ausgestattet
- Mittlerer Platzbedarf (mehr als 25 Dateien), fühlt sich aber ziemlich schlank an
- Hervorragende Dokumentation, obwohl einige in leicht gebrochenem Englisch sind
- Unterstützung von Sprachdateien
- reCAPTCHA wird unterstützt
- Wird in das Validierungssystem von CI eingebunden
- Aktivierungs-E-Mails
- Nicht aktivierte Konten verfallen automatisch
- Schlägt grc.com für Salze vor (nicht schlecht für ein PRNG)
- Verbot mit gespeicherten 'Grund'-Zeichenfolgen
- Einfache und dennoch effektive Fehlerbehandlung
Nachteile
- Ermöglicht Benutzern nur das Zurücksetzen eines verlorenen Passworts (anstatt bei der Reaktivierung ein neues Passwort auswählen zu lassen).
- Homebrew-Pseudo-Event-Modell - gute Absicht, verfehlt aber die Marke
- Zwei Passwortfelder in der Benutzertabelle, schlechter Stil
- Verwendet zwei separate Benutzertabellen (eine für temporäre Benutzer - mehrdeutig und redundant)
- Verwendet möglicherweise unsicheres MD5-Hashing
- Fehlgeschlagene Anmeldeversuche werden nur nach IP gespeichert, nicht nach Benutzername - unsicher!
- Autologin-Schlüssel nicht in der Datenbank gehasht - praktisch so unsicher wie das Speichern von Passwörtern im Klartext!
- Das Rollensystem ist ein komplettes Durcheinander: is_admin-Funktion mit fest codierten Rollennamen, is_role ein komplettes Durcheinander, check_uri_permissions ist ein Durcheinander, die gesamte Berechtigungstabelle ist eine schlechte Idee (ein URI kann sich ändern und Seiten ungeschützt machen; Berechtigungen sollten immer genau gespeichert werden wo die sensible Logik ist). Dealbreaker!
- Beinhaltet eine einheimische (arme) CAPTCHA
- Die reCAPTCHA-Funktionsoberfläche ist unübersichtlich
Vorteile
- Sehr voll ausgestattet
- Meist recht gut dokumentierter Code
- Die Trennung von Benutzer- und Profildaten ist eine nette Geste
- Wird in das Validierungssystem von CI eingebunden
- Aktivierungs-E-Mails
- Unterstützung von Sprachdateien
- Aktiv entwickelt
Nachteile
- Fühlt sich etwas aufgebläht an (50+ Dateien)
- Und doch fehlt die automatische Cookie-Anmeldung (!)
- Unterstützt keine Anmeldungen mit Benutzername und E-Mail
- Scheint Probleme mit UTF-8-Zeichen zu haben
- Erfordert viel Autoloading (Leistungseinbußen)
- Schlecht mikromanagierte Konfigurationsdatei
- Schreckliche View-Controller-Trennung mit viel Programmlogik in Ansichten und fest in Controller codierten Ausgaben. Dealbreaker!
- Schlechter HTML-Code in den enthaltenen Ansichten
- Beinhaltet minderwertiges CAPTCHA
- Überall kommentierte Debug-Echos
- Erzwingt eine bestimmte Ordnerstruktur
- Erzwingt eine bestimmte Ajax-Bibliothek (kann umgeschaltet werden, sollte aber überhaupt nicht vorhanden sein)
- Keine Höchstgrenze für Anmeldeversuche - SEHR unsicher! Dealbreaker!
- Hijacks Formularvalidierung
- Verwendet möglicherweise unsicheres MD5-Hashing
Vorteile
- Gutes Feature-Set für seinen winzigen Platzbedarf
- Leicht, kein Aufblähen (3 Dateien)
- Elegantes automatisches Cookie-Login
- Kommt mit optionaler Testimplementierung (nette Geste)
Nachteile
- Verwendet die alte CI-Datenbanksyntax (weniger sicher)
- Wird nicht in das Validierungssystem von CI eingebunden
- Ein bisschen unintuitives Status- (Rollen-) System (Indizes auf den Kopf gestellt - unpraktisch)
- Verwendet möglicherweise unsicheres sha1-Hashing
Vorteile
- Kleiner Platzbedarf (6 Dateien)
Nachteile
- Es fehlen viele wesentliche Funktionen. Dealbreaker!
- Alles ist fest codiert. Dealbreaker!
Laut dem CodeIgniter-Wiki wurde Redux eingestellt, aber die Ion Auth-Gabel ist stark: https://github.com/benedmunds/CodeIgniter-Ion-Auth
Ion Auth ist eine gut ausgestattete Bibliothek, ohne zu schwer oder zu weit fortgeschritten zu sein. In den meisten Fällen wird der Funktionsumfang den Anforderungen eines Projekts mehr als gerecht.
Vorteile
- Leicht und einfach in CodeIgniter zu integrieren
- Unterstützt das Senden von E-Mails direkt aus der Bibliothek
- Gut online dokumentiert und gute aktive Entwickler- / Benutzergemeinschaft
- Einfach in ein Projekt zu implementieren
Nachteile
- Komplexeres DB-Schema als einige andere
- In einigen Bereichen fehlen der Dokumentation Details
Vorteile
- Winziger Fußabdruck (4 Dateien)
- Minimalistisch, absolut kein Aufblähen
- Verwendet Phpass zum Hashing (ausgezeichnet)
Nachteile
- Nur anmelden, abmelden, erstellen und löschen
- Es fehlen viele wesentliche Funktionen. Dealbreaker!
- Eher ein Ausgangspunkt als eine Bibliothek
Versteh mich nicht falsch: Ich will keine der oben genannten Bibliotheken missachten; Ich bin sehr beeindruckt von dem, was ihre Entwickler erreicht haben und wie weit jeder von ihnen gekommen ist, und ich bin nicht überfordert, einen Teil ihres Codes wiederzuverwenden, um meinen eigenen zu erstellen. Was ich damit sagen möchte, ist, dass sich in diesen Projekten manchmal der Fokus von den wesentlichen „Need-to-Haves“ (wie z. B. harten Sicherheitspraktiken) hin zu weicheren „Nice-to-Haves“ verlagert, und das hoffe ich zu beheben .
Deshalb: zurück zu den Grundlagen.
Hier ist meine minimal erforderliche Liste von Funktionen aus einer Authentifizierungsbibliothek. Es ist auch eine Teilmenge der Funktionsliste meiner eigenen Bibliothek;)
- Winziger Platzbedarf mit optionaler Testimplementierung
- Vollständige Dokumentation
- Kein automatisches Laden erforderlich. Just-in-Time-Laden von Bibliotheken für die Leistung
- Unterstützung von Sprachdateien; Keine fest codierten Zeichenfolgen
- reCAPTCHA unterstützt, aber optional
- Empfohlene WAHRE zufällige Salzgenerierung (z. B. mit random.org oder random.irb.hr)
- Optionale Add-Ons zur Unterstützung der Anmeldung von Drittanbietern (OpenID, Facebook Connect, Google-Konto usw.)
- Melden Sie sich entweder mit Benutzername oder E-Mail an
- Trennung von Benutzer- und Profildaten
- E-Mails zur Aktivierung und verlorene Passwörter
- Automatische Cookie-Anmeldefunktion
- Konfigurierbarer Phpass zum Hashing (natürlich richtig gesalzen!)
- Hashing von Passwörtern
- Hashing von Autologin-Codes
- Hashing verlorener Passwortcodes
- Wird in das Validierungssystem von CI eingebunden
- KEINE Sicherheitsfragen!
- Erzwungene starke Kennwortrichtlinie serverseitig mit optionalem clientseitigen (Javascript) Validator
- Erzwungene maximale Anzahl fehlgeschlagener Anmeldeversuche mit Gegenmaßnahmen von BEST PRACTICES gegen Wörterbuch- und DoS-Angriffe!
- Der gesamte Datenbankzugriff erfolgt über vorbereitete (gebundene) Anweisungen!
Hinweis: Diese letzten Punkte sind kein Super-Hochsicherheits-Overkill, den Sie für Ihre Webanwendung nicht benötigen. Wenn eine Authentifizierungsbibliothek diese Sicherheitsstandards nicht zu 100% erfüllt, verwenden Sie sie NICHT!
Aktuelle hochkarätige Beispiele für verantwortungslose Programmierer, die sie aus ihrer Software herausgelassen haben: # 17 ist, wie Sarah Palins AOL-E-Mail während der Präsidentschaftskampagne gehackt wurde; Eine böse Kombination aus # 18 und # 19 war kürzlich der Schuldige, als die Twitter-Accounts von Britney Spears, Barack Obama, Fox News und anderen gehackt wurden. und allein mit # 20 gelang es chinesischen Hackern, 2008 in einem automatisierten Hack 9 Millionen persönliche Informationen von mehr als 70.000 koreanischen Websites zu stehlen.
Diese Anfälle sind keine Gehirnoperation. Wenn Sie Ihre Hintertüren weit offen lassen, sollten Sie sich nicht in ein falsches Sicherheitsgefühl täuschen, indem Sie die Vorderseite verriegeln. Wenn Sie die Codierung ernst genug nehmen, um ein Best-Practice-Framework wie CodeIgniter zu wählen, sind Sie es sich selbst schuldig, zumindest die grundlegendsten Sicherheitsmaßnahmen richtig durchzuführen.
<rant>
Im Grunde ist es so: Es ist mir egal, ob eine Authentifizierungsbibliothek eine Reihe von Funktionen, erweiterte Rollenverwaltung, PHP4-Kompatibilität, hübsche CAPTCHA-Schriftarten, Ländertabellen, vollständige Admin-Panels, Schnickschnack bietet - ob die Bibliothek dies tatsächlich tut Meine Website ist weniger sicher, da sie nicht den Best Practices folgt. Es ist ein Authentifizierungspaket . Es muss EINE Sache richtig machen: Authentifizierung. Wenn es nicht gelingt , dass , es ist tatsächlich mehr schaden als nützen.
</ rant>
/ Jens Roland
Beachten Sie, dass die "umfassende Auflistung" von Jens Roland keine Benutzerrollen enthält. Wenn Sie verschiedene Benutzerrollen zuweisen möchten (z. B. admin / user oder admin / editor / user), können Sie diese Bibliotheken verwenden:
Tank_Auth (Nr. 1 oben in Jens 'Liste) hat keine Benutzerrollen. Mir ist klar, dass es nicht gerade Teil der Authentifizierung ist, aber seitdem
Es ist sehr sinnvoll, eine Bibliothek zu haben, die beide verwaltet, wenn Sie sie benötigen. Aus diesem Grund wechsle ich von Tank_Auth zu Ion_Auth.
Ion_auth! Sieht sehr vielversprechend und klein aus! Ich mag..
Ich bin der Entwickler von Redux Auth und einige der von Ihnen erwähnten Probleme wurden in der Beta-Version 2 behoben. Sie können dies auch mit einer Beispielanwendung von der offiziellen Website herunterladen.
- Erfordert automatisches Laden (Beeinträchtigung der Leistung)
- Verwendet das inhärent unsichere Konzept von "Sicherheitsfragen". Dealbreaker!
Sicherheitsfragen werden jetzt nicht mehr verwendet und ein einfacheres System für vergessene Passwörter wurde eingerichtet.
- Rückgabetypen sind ein Durcheinander von Wahr-, Falsch-, Fehler- und Erfolgscodes
Dies wurde in Version 2 behoben und gibt boolesche Werte zurück. Ich hasste das Durcheinander genauso wie Sie.
- Wird nicht in das Validierungssystem von CI eingebunden
Die Beispielanwendung verwendet das Validierungssystem des CI.
- Erlaubt einem Benutzer nicht, einen Code für verlorenes Passwort erneut zu senden
In Arbeit
Ich habe auch einige andere Funktionen implementiert, z. B. E-Mail-Ansichten. Auf diese Weise können Sie die CodeIgniter-Helfer in Ihren E-Mails verwenden.
Es ist noch in Arbeit. Wenn Sie weitere Vorschläge haben, lassen Sie diese bitte weiter kommen.
-Popcorn
Ps: Danke, dass du Redux empfohlen hast.
Ich bin auf Flexi Auth gestoßen ( http://haseydesign.com/flexi-auth/ ). Es sieht sehr vielversprechend aus und ich habe damit begonnen. Es hat wundervolle Eigenschaften. Vollständig in CI integriert und mit zwei verschiedenen Bibliotheksdateien ausgestattet, von denen eine sehr stark mit allen Funktionen geladen ist und die andere nur die Validierungen enthält.
Eines der besten ist, dass das neu registrierte Mitglied für einen bestimmten Zeitraum temporären Zugriff auf die Website erhält, bis es auf den Link in seiner E-Mail klickt und aktiviert.
Vielleicht finden Sie Redux , das Ihren Anforderungen entspricht. Es ist kein Overkill und wird ausschließlich mit Funktionen geliefert, die die meisten von uns benötigen würden. Der Entwickler und die Mitwirkenden waren sehr streng, welcher Code beigesteuert wurde.
Dies ist die offizielle Seite
Ich verwende eine angepasste Version von DX Auth . Ich fand es einfach zu bedienen, extrem einfach zu modifizieren und es hat eine Bedienungsanleitung (mit großartigen Beispielen) , die der von Code Igniter sehr ähnlich ist.
Schauen Sie sich auch BackendPro an
Letztendlich werden Sie wahrscheinlich etwas Benutzerdefiniertes schreiben, aber es ist nichts Falsches daran, Konzepte von DX Auth, Freak Auth, BackendPro usw. auszuleihen.
Meine Erfahrungen mit den gepackten Apps sind, dass sie für bestimmte Strukturen spezifisch sind und ich Probleme hatte, sie in meine eigenen Anwendungen zu integrieren, ohne dass Hacks erforderlich waren. Wenn das Vorpaket ein Update enthält, muss ich sie migrieren.
Ich verwende auch Smarty und ADOdb in meinem CI-Code, sodass ich am Ende immer größere Codeänderungen vornehmen würde.
Tank Auth sieht gut aus, aber die Dokumentation enthält nur eine einseitige Erklärung zur Installation sowie einen kurzen Überblick über jede PHP-Datei. Zumindest ist das alles, was ich nach viel Googeln gefunden habe. Vielleicht meinen die Leute oben, wenn sie sagen, dass Tank Auth gut dokumentiert ist, dass der Code gut kommentiert ist. Das ist eine gute Sache, aber anders als die Dokumentation. Es wäre schön gewesen, eine Dokumentation darüber zu haben, wie die Funktionen von Tank Auth in Ihren vorhandenen Code integriert werden können.
Ich versuche Ion_Auth und schätze es übrigens ...
SimpleLoginSecure Macht die Authentifizierung einfach und sicher.