Jak wybrać bibliotekę uwierzytelniania dla CodeIgniter? [zamknięte]

Widzę, że jest Kilka . Które z nich są konserwowane i łatwe w użyciu? Jakie są ich plusy i minusy?

Author: Shog9, 2008-12-07

11 answers

Aktualizacja (14 Maja 2010):

Okazuje się, że rosyjski programista Ilya Konyukhov po przeczytaniu tego podniósł rękawicę i stworzył nową bibliotekę auth dla CI opartą na DX Auth, zgodnie z poniższymi zaleceniami i wymaganiami.

A wynik Tank Auth wygląda jak odpowiedź na pytanie OP. Zamierzam zaryzykować i nazwać Tank Auth najlepszą dostępną biblioteką uwierzytelniania dla CodeIgniter. / Align = "left" / biblioteka, która ma wszystkie funkcje, których potrzebujesz, a nie wszystkie, których nie masz:

Tank Auth

Plusy

  • full featured
  • Lean footprint (20 plików) biorąc pod uwagę zestaw funkcji
  • Bardzo dobra dokumentacja
  • proste i eleganckie projektowanie baz danych (tylko 4 tabele DB)
  • większość funkcji jest opcjonalna i łatwo konfigurowana
  • Obsługa plików językowych
  • reCAPTCHA obsługiwane
  • haki do System walidacji CI
  • e-maile aktywacyjne
  • Zaloguj się za pomocą adresu e-mail, nazwy użytkownika lub obu (konfigurowalne)
  • nieaktywne konta automatycznie wygasają
  • prosta, ale skuteczna obsługa błędów
  • Phpass jest jednym z najbardziej rozpoznawalnych i najbardziej rozpoznawalnych w świecie phpass.]}
  • nie używa pytań bezpieczeństwa
  • separacja danych użytkownika i profilu jest bardzo ładna
  • bardzo rozsądny model zabezpieczeń wokół nieudanych prób logowania (dobra ochrona przeciwko botom i atakom DoS)

(Drobne) Wady

  • kody utraconych haseł nie są hashowane w DB
  • [18]}Zawiera natywną (słabą) CAPTCHA, która jest miła dla tych, którzy nie chcą polegać na (należącej do Google) usłudze reCAPTCHA, ale naprawdę nie jest wystarczająco bezpieczna [19]}
  • bardzo rzadka dokumentacja online (drobny problem, ponieważ kod jest ładnie udokumentowany i intuicyjny)

Pobierz Tank Auth tutaj


Oryginalna odpowiedź:

Wdrożyłem również własne(obecnie około 80% zrobione po kilku tygodniach pracy). Wypróbowałem najpierw wszystkie inne; FreakAuth Light, DX Auth, Redux, SimpleLogin, SimpleLoginSecure, pc_user, Fresh Powered i kilka innych. Żaden z nich nie był na równi, IMO, albo brakowało im podstawowych funkcji, z natury niepewne, lub zbyt nadęty jak na mój gust.

Właściwie, zrobiłem szczegółowe podsumowanie wszystkich bibliotek uwierzytelniania dla CodeIgniter kiedy je testowałem (tuż po nowym roku). FWIW, podzielę się z wami:

DX Auth

Plusy

  • bardzo pełny opis
  • średni rozmiar (25 + plików), ale udaje się czuć dość smukły
  • doskonała dokumentacja, chociaż niektóre są w nieco złamanym języku angielskim
  • Obsługa plików językowych
  • reCAPTCHA obsługiwane
  • Hooks do systemu walidacji CI
  • e-maile aktywacyjne
  • nieaktywne konta automatycznie wygasają
  • sugeruje grc.com dla soli (nieźle jak na PRNG)
  • banowanie z przechowywanymi ciągami "reason"
  • prosta, ale skuteczna obsługa błędów

Cons

    Pozwala tylko "zresetować" utracone hasło (zamiast pozwalać im wybrać nowe po reaktywacji)]}
  • Homebrew pseudo-event model - dobre intencje, ale chybiony znak
  • dwa pola hasła w tabeli użytkownika, źle styl
  • Użytkownicy mogą korzystać z dwóch oddzielnych tabel (jedna dla użytkowników "temp" - niejednoznacznych i zbędnych).]}
  • używa potencjalnie niebezpiecznego hashowania md5
  • nieudane próby logowania przechowywane tylko przez IP, nie przez nazwę użytkownika-niebezpieczne!
  • Klucz Autologin nie hashowany w bazie danych-praktycznie równie niebezpieczny jak przechowywanie haseł w cleartext!
  • System ról jest kompletnym bałaganem: funkcja is_admin z kodowanymi nazwami ról, is_role jest kompletnym bałaganem, check_uri_permissions jest bałaganem, cała tabela uprawnień to zły pomysł (URI może zmieniać i renderować strony bez ochrony; uprawnienia powinny być zawsze przechowywane dokładnie tam, gdzie znajduje się wrażliwa logika). Dealbreaker!
  • Zawiera natywną (słabą) CAPTCHA
  • interfejs funkcji reCAPTCHA jest brudny

FreakAuth Light

Plusy

  • bardzo pełny opis
  • w większości dość dobrze udokumentowany kod
  • rozdzielenie danych użytkownika i profilu jest ładne dotyk
  • Hooks do systemu walidacji CI
  • e-maile aktywacyjne
  • Obsługa plików językowych
  • aktywnie rozwijany

Cons

  • czuje się trochę nadęty (50 + plików)
  • a mimo to nie ma automatycznego logowania cookie (!)
  • nie obsługuje logowania zarówno nazwą użytkownika, jak i adresem e-mail
  • wydaje się mieć problemy z UTF-8 znaków
  • [18]} wymaga dużo autoloadingu (utrudniającego działanie)
  • źle zarządzany plik konfiguracyjny
  • straszna separacja widoku-kontrolera, z dużą ilością logiki programu w widokach i wyjściami zakodowanymi na twardo do kontrolerów. Dealbreaker!
  • zły kod HTML w dołączonych widokach
  • Zawiera standard CAPTCHA
  • Skomentuj debugowanie ECHA wszędzie
  • wymusza określoną strukturę folderów
  • W przeciwieństwie do Ajax-a, Ajax-a, Ajax-a, Ajax-a, Ajax-a, Ajax-a, Ajax-a, Ajax-a, Ajax-a, Ajax-a, Ajax-a, Ajax-a]}
  • No max limit prób logowania - bardzo niebezpieczne! Dealbreaker!
  • przejmuje walidację formularza
  • używa potencjalnie niebezpiecznego hashowania md5

Pc_user

Plusy

  • dobry zestaw funkcji dla swojego małego footprint
  • lekki, bez wzdęcia (3 pliki)
  • eleganckie Automatyczne logowanie ciasteczek
  • [18]} jest wyposażony w opcjonalną implementację testu (miły dotyk)

Cons

  • używa starej bazy danych CI składnia (mniej bezpieczna)
  • nie podłącza się do systemu walidacji CI
  • nieintuicyjny system statusu (roli) (indeksy do góry nogami-niepraktyczne)
  • używa potencjalnie niebezpiecznego hashowania sha1

Fresh Powered

Plusy

  • small footprint (6 plików)

Cons

  • brak wielu istotnych funkcji. Dealbreaker!
  • Wszystko jest zakodowane. Dealbreaker!

Redux / Ion Auth

Zgodnie zCodeIgniter wiki , Redux został wycofany, ale widelec Ion Auth jest silny: https://github.com/benedmunds/CodeIgniter-Ion-Auth

Ion Auth jest dobrze funkcjonalną biblioteką, która nie jest zbyt ciężka ani zaawansowana. W większości przypadków jego zestaw funkcji będzie więcej niż zaspokoić wymagania projektu.

Plusy

  • lekki i prosty w integracji z CodeIgniter
  • obsługuje wysyłanie wiadomości e-mail bezpośrednio z biblioteki
  • dobrze udokumentowana online i dobra aktywna społeczność programistów / użytkowników
  • prosty do wdrożenia w projekcie

Cons

  • bardziej złożony schemat DB niż niektóre inne
  • w dokumentacji brakuje szczegółów w niektórych obszarach

SimpleLoginSecure

Plusy

  • Tiny footprint (4 pliki)
  • minimalistyczny, absolutnie brak wzdęcia
  • używa phpass do hashowania (excellent)

Cons

  • tylko Logowanie, wylogowanie, tworzenie i usuwanie
  • brak wielu istotnych funkcji. Dealbreaker!
  • bardziej punktem wyjścia niż biblioteką

Nie zrozum mnie źle: nie chcę lekceważyć żadnej z powyższych bibliotek; jestem pod wrażeniem tego, co osiągnęli ich twórcy i jak daleko zaszli, i nie jestem powyżej ponowne wykorzystanie ich kodu do zbudowania własnego. Chodzi mi o to, że czasami w tych projektach nacisk przesuwa się z podstawowych "potrzeb" (takich jak twarde praktyki bezpieczeństwa) na bardziej miękkie "miłe dla oka", i to mam nadzieję zaradzić.

Dlatego: powrót do podstaw.

Uwierzytelnianie dla CodeIgniter done right

Oto moja minimalna wymagana lista funkcji z biblioteki uwierzytelniania. Tak się składa, że jest to podzbiór mojej biblioteki lista funkcji;)

  1. mały ślad z opcjonalną implementacją testów
  2. Pełna dokumentacja
  3. nie wymaga automatycznego ładowania. Just-In-time ładowanie bibliotek dla wydajności
  4. obsługa plików językowych; brak kodowanych łańcuchów
  5. reCAPTCHA obsługiwane, ale opcjonalne
  6. zalecane prawdziwe losowe generowanie soli (np. przy użyciu random.org lub random.irb.hr)
  7. Facebook, OpenID, OpenID, OpenID, OpenID, OpenID, OpenID, OpenID, OpenID, OpenID, OpenID, OpenID Connect, konto Google itp.)
  8. Zaloguj się używając nazwy użytkownika lub e-maila
  9. separacja danych użytkownika i profilu
  10. e-maile do aktywacji i utraconych haseł
  11. funkcja automatycznego logowania plików cookie
  12. konfigurowalny phpass do hashowania (oczywiście poprawnie solone!)
  13. haszowanie haseł
  14. haszowanie kodów autologin
  15. haszowanie kodów utraconych haseł
  16. Hooks do systemu walidacji CI
  17. nie pytania bezpieczeństwa!
  18. Po stronie serwera, z opcjonalnym walidatorem po stronie klienta (Javascript)
  19. wymuszono maksymalną liczbę nieudanych prób logowania za pomocą najlepszych praktyk przeciwdziałających zarówno atakom słownikowym, jak i DoS!
  20. cały dostęp do bazy danych odbywa się za pomocą gotowych (związanych) instrukcji!

Uwaga: te ostatnie punkty to a nie super-wysoki poziom bezpieczeństwa, którego nie potrzebujesz do swojej sieci podanie. Jeśli biblioteka uwierzytelniania nie spełnia w 100% tych standardów bezpieczeństwa, nie używaj jej!

[2]}ostatnie głośne przykłady nieodpowiedzialnych programistów, którzy zostawili ich poza oprogramowaniem: #17 to sposób, w jaki włamano się do poczty AOL Sary Palin podczas kampanii prezydenckiej; paskudne połączenie #18 i #19 było winowajcą ostatnio, gdy zhakowano konta na Twitterze Britney Spears, Baracka Obamy, Fox News i innych; a # 20 to tylko sposób, w jaki chińscy hakerzy zdołali ukraść 9 milion elementów danych osobowych z ponad 70.000 koreańskich witryn internetowych w jednym zautomatyzowanym hack w 2008 roku. Te ataki nie są operacjami mózgu. Jeśli zostawisz otwarte tylne drzwi, nie powinieneś łudzić się fałszywym poczuciem bezpieczeństwa, przykręcając przód. Co więcej, jeśli jesteś wystarczająco poważny w kodowaniu, aby wybrać najlepsze praktyki, takie jak CodeIgniter, jesteś winien sobie, aby przynajmniej uzyskać jak najwięcej podstawowych środków bezpieczeństwa racja.

Zasadniczo, oto jak to jest: nie obchodzi mnie czy biblioteka auth oferuje wiele funkcji, Zaawansowane zarządzanie rolami, kompatybilność z PHP4, ładne czcionki CAPTCHA, tabele krajów, kompletne panele administracyjne, dzwonki i gwizdki -- jeśli Biblioteka faktycznie sprawia, że moja strona jest mniej bezpieczna, nie przestrzegając najlepszych praktyk. Jest to pakiet uwierzytelniania ; musi zrobić jedną rzecz dobrze: uwierzytelnianie. Jeśli się nie uda To czyni więcej szkody niż pożytku.

/Jens Roland

 454
Author: Jens Roland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-07 21:49:34

Zauważ, że "kompleksowa lista" autorstwa Jensa Rolanda nie obejmuje ról użytkowników. Jeśli chcesz przypisać różne role użytkownika (takie jak admin/user lub admin/editor/user), te biblioteki pozwalają na to:

  • Ion_Auth (rewrite of Redux)
  • Redux
  • Backend Pro

Tank_Auth (#1 powyżej na liście Jensa) nie ma ról użytkownika. Zdaję sobie sprawę, że nie jest to dokładnie część uwierzytelniania, ale ponieważ

  • uwierzytelnianie i zarządzanie rolami to zarówno obsługiwane po załadowaniu strony
  • Oba dotyczą bezpieczeństwa
  • ta sama tabela / model może być używany dla obu.
  • Oba mogą być ustawione do ładowania w konstruktorze kontrolera (lub nawet autoload)

To ma sens mieć jedną bibliotekę do obsługi obu, jeśli tego potrzebujesz. Przełączam się na Ion_auth z Tank_Auth z tego powodu.

 54
Author: Burton Kent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-12 17:26:11

Ion_auth! Wygląda bardzo obiecująco i ma niewielkie rozmiary! Podoba mi się..

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

 35
Author: Marko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-10 20:09:35

Jestem twórcą Redux Auth i niektóre z wymienionych problemów zostały naprawione w wersji 2 beta. Możesz pobrać to z oficjalnej strony internetowej za pomocą przykładowej aplikacji.

  • wymaga automatycznego ładowania (utrudniającego działanie)
  • Używa z natury niebezpiecznego pojęcia "pytania bezpieczeństwa". Dealbreaker!

Pytania zabezpieczające nie są teraz używane i wprowadzono prostszy system zapomnianych haseł.

  • typy zwrotów to trochę hodgepodge kodów true, false, error i success

To zostało naprawione w wersji 2 i zwraca wartości logiczne. Nienawidziłem hodgepodge tak samo jak ty.

  • nie podłącza się do systemu walidacji CI

Przykładowa aplikacja korzysta z systemu walidacji CI.

    Nie pozwala użytkownikowi na ponowne wysłanie kodu "utracone hasło".]}

Work in progress

Ja też zaimplementowane niektóre inne funkcje, takie jak widoki e-mail, daje to możliwość korzystania z pomocników CodeIgniter w wiadomościach e-mail.

To wciąż praca w toku, więc jeśli masz jakieś sugestie, proszę je kontynuować.

-Popcorn

Ps: dzięki za polecanie Redux.

 29
Author: Svish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-05 06:12:39

Może znajdziesz Redux odpowiadający Twoim potrzebom. Nie jest to przesada i jest pakowany wyłącznie z gołymi funkcjami, których większość z nas wymagałaby. Dev i współpracownicy byli bardzo surowi w kwestii tego, jaki kod został dodany.

To jest oficjalna strona

 12
Author: Filip Dupanović,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-10 09:54:56

Natknąłem się na Flexi Auth ( http://haseydesign.com/flexi-auth / ). wygląda bardzo obiecująco i zacząłem go używać. Ma cudowne cechy. W pełni integruje się z CI i jest dostarczany z dwoma różnymi plikami bibliotecznymi, w których jeden jest bardzo obciążony wszystkimi funkcjami, a drugi zawiera tylko walidacje.

Jednym z najlepszych jest to, że nowo zarejestrowany członek otrzymuje tymczasowy dostęp na określoną ilość czasu na stronie, dopóki nie kliknie linku z ich e-mail i aktywować.

 12
Author: Suthan Bala,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-30 20:08:46

Ion_Auth bije tank_auth głównie z dwóch powodów, ról użytkownika i dokumentacji, tych dwóch brakuje w tank_auth.

 7
Author: nedu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-27 08:25:38

Używam dostosowanej wersji DX Auth. Okazało się, że jest prosty w użyciu, niezwykle łatwy do modyfikacji i ma Podręcznik użytkownika (ze świetnymi przykładami), który jest bardzo podobny do kodu Ignitera.

 5
Author: Jelani Harris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-10 18:08:31

Zobacz też BackendPro

Ostatecznie prawdopodobnie skończysz pisząc coś niestandardowego, ale nie ma nic złego w zapożyczaniu pojęć z DX Auth, Freak Auth, BackendPro itp.

Moje doświadczenia z pakietami aplikacji są specyficzne dla pewnych struktur i miałem problemy z integracją ich z własnymi aplikacjami bez konieczności hackowania, więc jeśli pre-pakiet ma aktualizację, muszę je przenieść.

Używam również Smarty i ADOdb w moim kodzie CI, więc bez względu na to, co zawsze kończę na dużych zmianach kodu.

 3
Author: Adam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-13 02:53:36

Tank Auth wygląda dobrze, ale dokumentacja to tylko jednostronicowe wyjaśnienie, jak zainstalować, plus Szybkie uruchamianie KAŻDEGO pliku PHP. Przynajmniej tyle znalazłem po wielu Googlach. Może to, co ludzie mają na myśli powyżej, gdy mówią, że Auth czołgu jest dobrze udokumentowany, to to, że kod jest dobrze skomentowany. To dobrze, ale inaczej niż dokumentacja. Byłoby miło mieć trochę dokumentacji o tym, jak zintegrować funkcje Tank Auth z istniejącym kodem.

 2
Author: user1284303,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-21 04:23:33

Próbuję Ion_Auth i doceniam to, btw...

SimpleLoginSecure Sprawia, że uwierzytelnianie jest proste i bezpieczne.

 2
Author: Fabiano Shark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-26 20:16:34