Widzę, że jest ich kilka . Które są utrzymywane i łatwe w użyciu? Jakie są ich zalety i wady?
Widzę, że jest ich kilka . Które są utrzymywane i łatwe w użyciu? Jakie są ich zalety i wady?
Odpowiedzi:
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.
Powstały Auth Tank wygląda jak odpowiedź na pytanie PO. Mam zamiar wyjść tutaj na całość i nazwać Tank Auth najlepszą dostępną dzisiaj biblioteką uwierzytelniania CodeIgniter. To solidna biblioteka, która ma wszystkie funkcje, których potrzebujesz, i nie ma nadęty:
Plusy
- Pełna funkcjonalność
- Lean footprint (20 plików), biorąc pod uwagę zestaw funkcji
- Bardzo dobra dokumentacja
- Prosty i elegancki projekt bazy danych (tylko 4 tabele DB)
- Większość funkcji jest opcjonalna i łatwa do skonfigurowania
- Obsługa plików językowych
- Obsługa reCAPTCHA
- Podłącza się do systemu sprawdzania poprawności CI
- E-maile aktywacyjne
- Zaloguj się przy użyciu adresu e-mail, nazwy użytkownika lub obu (konfigurowalne)
- Nieaktywowane konta wygasają automatycznie
- Prosta, ale skuteczna obsługa błędów
- Używa phpass do mieszania (a także szyfruje kody autologin w DB)
- Nie używa pytań bezpieczeństwa
- Oddzielenie danych użytkownika i profilu jest bardzo miłe
- Bardzo rozsądny model bezpieczeństwa dotyczący nieudanych prób logowania (dobra ochrona przed botami i atakami DoS)
(Drobne) Wady
- Kody utraconych haseł nie są mieszane w DB
- Zawiera natywną (słabą) CAPTCHA, co jest miłe dla tych, którzy nie chcą polegać na usłudze reCAPTCHA (należącej do Google), ale tak naprawdę nie jest wystarczająco bezpieczny
- Bardzo rzadka dokumentacja online (tutaj drobny problem, ponieważ kod jest dobrze udokumentowany i intuicyjny)
Oryginalna odpowiedź:
Zaimplementowałem również własne (obecnie około 80% wykonanych po kilku tygodniach pracy). Najpierw wypróbowałem wszystkie pozostałe; FreakAuth Light, DX Auth, Redux, SimpleLogin, SimpleLoginSecure, pc_user, Fresh Powered i kilka innych. Żadne z nich nie dorównywało IMO, albo brakowało im podstawowych funkcji, z natury NIEBEZPIECZNYCH, albo było zbyt rozdęte jak na mój gust.
Właściwie zrobiłem szczegółowy przegląd wszystkich bibliotek uwierzytelniających CodeIgniter, kiedy je testowałem (tuż po Nowym Roku). FWIW, podzielę się tym z tobą:
Plusy
- Bardzo w pełni funkcjonalny
- Średni rozmiar (ponad 25 plików), ale wydaje się być dość szczupły
- Doskonała dokumentacja, choć niektóre są w nieco zepsutym języku angielskim
- Obsługa plików językowych
- Obsługa reCAPTCHA
- Podłącza się do systemu sprawdzania poprawności CI
- E-maile aktywacyjne
- Nieaktywowane konta wygasają automatycznie
- Sugeruje grc.com dla soli (nieźle jak na PRNG)
- Banowanie z zapisanymi ciągami „przyczyny”
- Prosta, ale skuteczna obsługa błędów
Cons
- Pozwala tylko użytkownikom „zresetować” utracone hasło (zamiast pozwolić im wybrać nowe przy ponownej aktywacji)
- Model pseudo-zdarzeń homebrew - dobra intencja, ale nie trafia w sedno
- Dwa pola haseł w tabeli użytkowników, zły styl
- Wykorzystuje dwie oddzielne tabele użytkowników (jedna dla użytkowników tymczasowych - niejednoznaczna i nadmiarowa)
- Używa potencjalnie niebezpiecznego mieszania md5
- Nieudane próby logowania zapisane tylko przez IP, a nie według nazwy użytkownika - niebezpieczne!
- Klucz autologin nie jest mieszany w bazie danych - praktycznie tak niebezpieczny jak przechowywanie haseł w postaci czystego tekstu!
- System ról to kompletny bałagan: funkcja is_admin z zakodowanymi nazwami ról, is_role kompletny bałagan, check_uri_permissions to bałagan, cała tabela uprawnień jest złym pomysłem (URI może zmieniać i renderować strony bez ochrony; uprawnienia powinny być zawsze przechowywane dokładnie gdzie jest wrażliwa logika). Łamacz kruponów!
- Obejmuje natywną (słabą) CAPTCHA
- Interfejs funkcji reCAPTCHA jest nieuporządkowany
Plusy
- Bardzo w pełni funkcjonalny
- Przeważnie całkiem dobrze udokumentowany kod
- Oddzielenie danych użytkownika i profilu to miły akcent
- Podłącza się do systemu sprawdzania poprawności CI
- E-maile aktywacyjne
- Obsługa plików językowych
- Aktywnie rozwinięty
Cons
- Czuje się nieco wzdęty (ponad 50 plików)
- A jednak nie ma automatycznego logowania do plików cookie (!)
- Nie obsługuje logowania przy użyciu nazwy użytkownika i adresu e-mail
- Wygląda na to, że występują problemy ze znakami UTF-8
- Wymaga dużo automatycznego ładowania (utrudnia wydajność)
- Źle zarządzany plik konfiguracyjny
- Straszna separacja kontrolerów od widoku, z dużą ilością logiki programu w widokach i wyjściem zakodowanym na stałe w kontrolerach. Łamacz kruponów!
- Słaby kod HTML w dołączonych widokach
- Obejmuje niespełniający normy CAPTCHA
- Komentowane debugowanie rozbrzmiewa wszędzie
- Wymusza określoną strukturę folderów
- Wymusza określoną bibliotekę Ajax (można ją przełączać, ale przede wszystkim nie powinno jej być)
- Brak maksymalnego limitu prób logowania - BARDZO niebezpieczny! Łamacz kruponów!
- Porywacze sprawdzają poprawność formularza
- Używa potencjalnie niebezpiecznego mieszania md5
Plusy
- Dobry zestaw funkcji ze względu na niewielką powierzchnię
- Lekki, bez wzdęć (3 pliki)
- Eleganckie automatyczne logowanie do plików cookie
- Pochodzi z opcjonalną implementacją testu (miły dotyk)
Cons
- Używa starej składni bazy danych CI (mniej bezpieczne)
- Nie łączy się z systemem sprawdzania poprawności CI
- Nieintuicyjny system statusu (roli) (indeksy do góry nogami - niepraktyczne)
- Używa potencjalnie niebezpiecznego mieszania sha1
Plusy
- Mały ślad (6 plików)
Cons
- Brakuje wielu niezbędnych funkcji. Łamacz kruponów!
- Wszystko jest zakodowane na stałe. Łamacz kruponów!
Według wiki CodeIgniter , Redux zostało przerwane, ale rozwidlenie Ion Auth rozwija się dobrze: https://github.com/benedmunds/CodeIgniter-Ion-Auth
Ion Auth to dobrze wyposażona biblioteka, która nie jest zbyt ciężka ani zbyt zaawansowana. W większości przypadków jego zestaw funkcji będzie więcej niż spełniał 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ść deweloperów / użytkowników
- Prosty do wdrożenia w projekcie
Cons
- Bardziej złożony schemat DB niż niektóre inne
- W niektórych obszarach dokumentacji brakuje szczegółów
Plusy
- Mały ślad (4 pliki)
- Minimalistyczny, absolutnie bez wzdęć
- Używa phpass do mieszania (doskonałe)
Cons
- Zaloguj się, wyloguj, utwórz i usuń
- Brakuje wielu niezbędnych funkcji. Łamacz kruponów!
- Bardziej jako punkt wyjścia niż biblioteka
Nie zrozum mnie źle: nie chcę lekceważyć żadnej z powyższych bibliotek; Jestem pod wielkim wrażeniem tego, co osiągnęli ich programiści i jak daleko zaszli każdy z nich, i nie jestem ponad tym, że ponownie wykorzystuję część ich kodu do zbudowania własnego. Mówię o tym, że czasami w tych projektach nacisk kładzie się z podstawowych „potrzebnych rzeczy” (takich jak twarde praktyki bezpieczeństwa) na łagodniejsze „miłe do zrobienia”, i mam nadzieję to naprawić .
Dlatego: powrót do podstaw.
Oto moja MINIMALNA wymagana lista funkcji z biblioteki uwierzytelniania. Zdarza się też, że jest podzbiorem listy funkcji mojej biblioteki;)
- Mały ślad z opcjonalną implementacją testu
- Pełna dokumentacja
- Nie wymaga automatycznego ładowania. Ładowanie bibliotek w samą porę w celu zwiększenia wydajności
- Obsługa plików językowych; bez zakodowanych ciągów
- reCAPTCHA obsługiwane, ale opcjonalne
- Zalecane PRAWDZIWE losowe generowanie soli (np. Za pomocą random.org lub random.irb.hr)
- Opcjonalne dodatki do obsługi logowania stron trzecich (OpenID, Facebook Connect, konto Google itp.)
- Zaloguj się przy użyciu nazwy użytkownika lub adresu e-mail
- Rozdzielenie danych użytkownika i profilu
- E-maile dotyczące aktywacji i utraconych haseł
- Funkcja automatycznego logowania do plików cookie
- Konfigurowalny phpass do mieszania (oczywiście właściwie solony!)
- Mieszanie haseł
- Mieszanie kodów autologin
- Mieszanie zgubionych kodów haseł
- Podłącza się do systemu sprawdzania poprawności CI
- Bez pytań bezpieczeństwa!
- Wymuszone zasady silnych haseł po stronie serwera z opcjonalnym walidatorem po stronie klienta (Javascript)
- Wymuszona maksymalna liczba nieudanych prób logowania przy pomocy środków NAJLEPSZYCH PRAKTYK zarówno przeciwko atakom słownikowym, jak i DoS!
- Cały dostęp do bazy danych odbywa się poprzez przygotowane (powiązane) instrukcje!
Uwaga: te ostatnie kilka punktów nie jest przesadą o bardzo wysokim poziomie bezpieczeństwa, której nie potrzebujesz w swojej aplikacji internetowej. Jeśli biblioteka uwierzytelniająca nie spełnia tych standardów bezpieczeństwa w 100%, NIE UŻYWAJ!
Ostatnie głośne przykłady nieodpowiedzialnych programistów, którzy usunęli ich ze swojego oprogramowania: # 17 to sposób, w jaki e-mail Sarah Palin AOL został zhakowany podczas kampanii prezydenckiej; nieprzyjemna kombinacja # 18 i # 19 była ostatnio winowajcą, gdy włamano się na konta Britney Spears, Baracka Obamy, Fox News i innych; a tylko # 20 to sposób, w jaki chińskim hakerom udało się ukraść 9 milionów danych osobowych z ponad 70 000 koreańskich stron internetowych w jednym zaatakowanym automacie w 2008 roku.
Te ataki nie są operacjami mózgu. Jeśli pozostawisz szeroko otwarte tylne drzwi, nie powinieneś się łudzić fałszywym poczuciem bezpieczeństwa, ryglując przód. Co więcej, jeśli na tyle poważnie podchodzisz do kodowania, aby wybrać środowisko najlepszych praktyk, takie jak CodeIgniter, jesteś winien sobie, aby przynajmniej odpowiednio wykonać najbardziej podstawowe środki bezpieczeństwa.
<rant>
Zasadniczo oto, jak to jest: nie dbam o to, czy biblioteka auth oferuje wiele funkcji, zaawansowane zarządzanie rolami, zgodność z PHP4, ładne czcionki CAPTCHA, tabele krajów, kompletne panele administracyjne, dzwonki i gwizdki - jeśli biblioteka faktycznie robi moja witryna jest mniej bezpieczna, ponieważ nie przestrzegam najlepszych praktyk. To pakiet uwierzytelniający ; musi zrobić jedną właściwą rzecz: Uwierzytelnianie. Jeśli nie udaje mu się to , to rzeczywiście robi więcej szkody niż pożytku.
</rant>
/ Jens Roland
Pamiętaj, że „kompleksowa lista” 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 zezwalają na to:
Tank_Auth (nr 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 od tego czasu
Sensowne jest posiadanie jednej biblioteki do obsługi obu, jeśli jest to potrzebne. Z tego powodu przełączam się na Ion_Auth z Tank_Auth.
Ion_auth! Wygląda bardzo obiecująco i zajmuje niewiele miejsca! Podoba mi się..
Jestem programistą Redux Auth, a niektóre z wymienionych przez ciebie problemów zostały naprawione w wersji 2 beta. Możesz pobrać to również z oficjalnej strony z przykładową aplikacją.
- Wymaga automatycznego ładowania (utrudnia wydajność)
- Wykorzystuje z natury niebezpieczną koncepcję „pytań bezpieczeństwa”. Łamacz kruponów!
Pytania bezpieczeństwa nie są teraz używane i wprowadzono prostszy system zapomnianego hasła.
- Typy zwracane są trochę mieszanką prawdziwych, fałszywych, błędów i kodów sukcesu
Zostało to naprawione w wersji 2 i zwraca wartości logiczne. Nienawidziłem hodgepodge tak samo jak ty.
- Nie łączy się z systemem sprawdzania poprawności CI
Przykładowa aplikacja korzysta z systemu sprawdzania poprawności CI.
- Nie zezwala użytkownikowi na ponowne przesłanie kodu „utraconego hasła”
Praca w toku
Zaimplementowałem również inne funkcje, takie jak widoki wiadomości e-mail, co daje możliwość korzystania z pomocników CodeIgniter w wiadomościach e-mail.
To wciąż praca w toku, więc jeśli masz jakieś sugestie, nie przestawaj je otrzymywać.
-Prażona kukurydza
Ps: Dziękujemy za polecenie Redux.
Natknąłem się na Flexi Auth ( http://haseydesign.com/flexi-auth/ ). Wygląda bardzo obiecująco i zacząłem go używać. Ma funkcje cudowne. W pełni integruje się z CI i zawiera dwa różne pliki bibliotek, w których jeden jest bardzo obciążony wszystkimi funkcjami, a drugi zawiera tylko sprawdzania poprawności.
Jedną z najlepszych jest to, że nowo zarejestrowany członek otrzymuje tymczasowy dostęp przez określony czas na stronie, dopóki nie kliknie linku z e-maila i aktywuje się.
Może znajdziesz Redux odpowiadające Twoim potrzebom. To nie jest przesada i jest zapakowany tylko z nagimi funkcjami, których większość z nas potrzebowałaby. Twórcy i współautorzy byli bardzo surowi w kwestii tego, jaki kod został dodany.
To jest oficjalna strona
Używam niestandardowej wersji DX Auth . Uznałem, że jest łatwy w użyciu, niezwykle łatwy do modyfikacji i ma instrukcję obsługi (z świetnymi przykładami), która jest bardzo podobna do Code Igniter's.
Zobacz także BackendPro
Ostatecznie prawdopodobnie skończysz pisać coś niestandardowego, ale nie ma nic złego w pożyczaniu koncepcji od DX Auth, Freak Auth, BackendPro itp.
Moje doświadczenia z aplikacjami w pakiecie są takie, że są one specyficzne dla niektórych struktur i miałem problemy z integracją ich z własnymi aplikacjami bez konieczności włamań, więc jeśli pakiet wstępny zawiera aktualizację, muszę je migrować.
Używam również Smarty i ADOdb w kodzie CI, więc bez względu na to, co zawsze skończę, wprowadzam poważne zmiany w kodzie.
Tank Auth wygląda dobrze, ale dokumentacja to tylko jednostronicowe objaśnienie instalacji, a także szybkie przeglądanie każdego pliku PHP. Przynajmniej tyle znalazłem po wielu Googlingach. Być może to, co ludzie mają na myśli powyżej, gdy mówią, że Tank Auth jest dobrze udokumentowany, to to, że kod jest dobrze skomentowany. To dobrze, ale różni się od dokumentacji. Byłoby miło mieć dokumentację na temat integracji funkcji Tank Auth z istniejącym kodem.
Próbuję Ion_Auth i doceniam to, przy okazji ...
SimpleLoginSecure Sprawia, że uwierzytelnianie jest proste i bezpieczne.