Как выбрать библиотеку аутентификации для CodeIgniter?

Вижу, есть несколько. Какие из них обслуживаются и просты в использовании? Каковы их плюсы и минусы?

Если вам все еще интересно, посмотрите Tank Auth. Я только что обновил свой пост после того, как просмотрел его, и он отличный.

Jens Roland 14.05.2010 20:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
398
1
152 552
11
Перейти к ответу Данный вопрос помечен как решенный

Ответы 11

Может быть, вы найдете Redux, который вам подходит. В этом нет ничего лишнего, и он поставляется исключительно с голыми функциями, которые потребуются большинству из нас. Разработчик и участники очень строго относились к тому, какой код был добавлен.

Это официальная страница

Redux дольше поддерживается, см. Это обсуждение. codeigniter.com/forums/viewthread/145342

The Pixel Developer 13.02.2010 14:24

Ion Auth основан на Redux Auth 2, и я бы использовал именно его. PyroCMS тоже использует его. github.com/benedmunds/CodeIgniter-Ion-Auth

Robert Audi 18.07.2010 23:07

Я использую кастомную версию DX Auth. Я нашел его простым в использовании, чрезвычайно легким в изменении, и он имеет руководство пользователя (с отличными примерами), который очень похож на Code Igniter.

Также посмотрите BackendPro

В конечном итоге вы, вероятно, напишете что-то нестандартное, но нет ничего плохого в заимствовании концепций из DX Auth, Freak Auth, BackendPro и т. д.

Мой опыт работы с упакованными приложениями заключается в том, что они специфичны для определенных структур, и у меня возникли проблемы с их интеграцией в мои собственные приложения без необходимости взлома, тогда, если в предварительном пакете есть обновление, я должен их перенести.

Я также использую Smarty и ADOdb в своем коде CI, поэтому независимо от того, что я всегда буду делать серьезные изменения в коде.

Ответ принят как подходящий

Обновление (14 мая 2010 г.):

Оказывается, российский разработчик Илья Конюхов принял вызов после прочтения этого и создал новую библиотеку авторизации для CI на основе DX Auth, следуя рекомендациям и требованиям, приведенным ниже.

И результирующий Танк Auth выглядит как ответ на вопрос OP. Я собираюсь рискнуть и назвать Tank Auth лучшей библиотекой аутентификации для CodeIgniter, доступной сегодня. Это надежная библиотека, в которой есть все необходимые вам функции и ничего лишнего:

Танк Auth

Pros

  • Full featured
  • Lean footprint (20 files) considering the feature set
  • Very good documentation
  • Simple and elegant database design (just 4 DB tables)
  • Most features are optional and easily configured
  • Language file support
  • reCAPTCHA supported
  • Hooks into CI's validation system
  • Activation emails
  • Login with email, username or both (configurable)
  • Unactivated accounts auto-expire
  • Simple yet effective error handling
  • Uses phpass for hashing (and also hashes autologin codes in the DB)
  • Does not use security questions
  • Separation of user and profile data is very nice
  • Very reasonable security model around failed login attempts (good protection against bots and DoS attacks)

(Minor) Cons

  • Lost password codes are not hashed in DB
  • Includes a native (poor) CAPTCHA, which is nice for those who don't want to depend on the (Google-owned) reCAPTCHA service, but it really isn't secure enough
  • Very sparse online documentation (minor issue here, since the code is nicely documented and intuitive)

Загрузите Tank Auth здесь


Оригинальный ответ:

Я также реализовал свой собственный (в настоящее время около 80% сделано после нескольких недель работы). Я сначала попробовал все остальные; FreakAuth Light, DX Auth, Redux, SimpleLogin, SimpleLoginSecure, pc_user, Fresh Powered и многие другие. Ни один из них не был на должном уровне, ИМО, либо им не хватало базовых функций, они были небезопасны по своей сути, либо были слишком раздутыми, на мой вкус.

На самом деле, я сделал подробный обзор всех библиотек аутентификации для CodeIgniter, когда тестировал их (сразу после Нового года). FWIW, я поделюсь с вами:

DX Auth

Pros

  • Very full featured
  • Medium footprint (25+ files), but manages to feel quite slim
  • Excellent documentation, although some is in slightly broken English
  • Language file support
  • reCAPTCHA supported
  • Hooks into CI's validation system
  • Activation emails
  • Unactivated accounts auto-expire
  • Suggests grc.com for salts (not bad for a PRNG)
  • Banning with stored 'reason' strings
  • Simple yet effective error handling

Cons

  • Only lets users 'reset' a lost password (rather than letting them pick a new one upon reactivation)
  • Homebrew pseudo-event model - good intention, but misses the mark
  • Two password fields in the user table, bad style
  • Uses two separate user tables (one for 'temp' users - ambiguous and redundant)
  • Uses potentially unsafe md5 hashing
  • Failed login attempts only stored by IP, not by username - unsafe!
  • Autologin key not hashed in the database - practically as unsafe as storing passwords in cleartext!
  • Role system is a complete mess: is_admin function with hard-coded role names, is_role a complete mess, check_uri_permissions is a mess, the whole permissions table is a bad idea (a URI can change and render pages unprotected; permissions should always be stored exactly where the sensitive logic is). Dealbreaker!
  • Includes a native (poor) CAPTCHA
  • reCAPTCHA function interface is messy

FreakAuth Свет

Pros

  • Very full featured
  • Mostly quite well documented code
  • Separation of user and profile data is a nice touch
  • Hooks into CI's validation system
  • Activation emails
  • Language file support
  • Actively developed

Cons

  • Feels a bit bloated (50+ files)
  • And yet it lacks automatic cookie login (!)
  • Doesn't support logins with both username and email
  • Seems to have issues with UTF-8 characters
  • Requires a lot of autoloading (impeding performance)
  • Badly micromanaged config file
  • Terrible View-Controller separation, with lots of program logic in views and output hard-coded into controllers. Dealbreaker!
  • Poor HTML code in the included views
  • Includes substandard CAPTCHA
  • Commented debug echoes everywhere
  • Forces a specific folder structure
  • Forces a specific Ajax library (can be switched, but shouldn't be there in the first place)
  • No max limit on login attempts - VERY unsafe! Dealbreaker!
  • Hijacks form validation
  • Uses potentially unsafe md5 hashing

pc_user

Pros

  • Good feature set for its tiny footprint
  • Lightweight, no bloat (3 files)
  • Elegant automatic cookie login
  • Comes with optional test implementation (nice touch)

Cons

  • Uses the old CI database syntax (less safe)
  • Doesn't hook into CI's validation system
  • Kinda unintuitive status (role) system (indexes upside down - impractical)
  • Uses potentially unsafe sha1 hashing

Fresh Powered

Pros

  • Small footprint (6 files)

Cons

  • Lacks a lot of essential features. Dealbreaker!
  • Everything is hard-coded. Dealbreaker!

Redux / Ion Auth

Согласно вики CodeIgniter, Redux был прекращен, но форк Ion Auth набирает обороты: https://github.com/benedmunds/CodeIgniter-Ion-Auth

Ion Auth - это хорошо оснащенная библиотека, но она не слишком тяжелая или недостаточно продвинутая. В большинстве случаев его набор функций более чем соответствует требованиям проекта.

Pros

  • Lightweight and simple to integrate with CodeIgniter
  • Supports sending emails directly from the library
  • Well documented online and good active dev/user community
  • Simple to implement into a project

Cons

  • More complex DB schema than some others
  • Documentation lacks detail in some areas

SimpleLoginSecure

Pros

  • Tiny footprint (4 files)
  • Minimalistic, absolutely no bloat
  • Uses phpass for hashing (excellent)

Cons

  • Only login, logout, create and delete
  • Lacks a lot of essential features. Dealbreaker!
  • More of a starting point than a library

Не поймите меня неправильно: Я не хочу игнорировать любую из вышеперечисленных библиотек; Я очень впечатлен тем, чего достигли их разработчики и как далеко продвинулся каждый из них, и я не прочь повторно использовать часть их кода для создания своего собственного. Я говорю о том, что иногда в этих проектах акцент смещается с основных `` необходимых вещей '' (например, жестких мер безопасности) на более мягкие `` полезные вещи '', и это то, что я надеюсь исправить. .

Поэтому: вернемся к истокам.

Аутентификация для CodeIgniter выполнена верно

Вот мой МИНИМАЛЬНЫЙ необходимый список функций из библиотеки аутентификации. Это также часть списка функций моей собственной библиотеки;)

  1. Tiny footprint with optional test implementation
  2. Full documentation
  3. No autoloading required. Just-in-time loading of libraries for performance
  4. Language file support; no hard-coded strings
  5. reCAPTCHA supported but optional
  6. Recommended TRUE random salt generation (e.g. using random.org or random.irb.hr)
  7. Optional add-ons to support 3rd party login (OpenID, Facebook Connect, Google Account, etc.)
  8. Login using either username or email
  9. Separation of user and profile data
  10. Emails for activation and lost passwords
  11. Automatic cookie login feature
  12. Configurable phpass for hashing (properly salted of course!)
  13. Hashing of passwords
  14. Hashing of autologin codes
  15. Hashing of lost password codes
  16. Hooks into CI's validation system
  17. NO security questions!
  18. Enforced strong password policy server-side, with optional client-side (Javascript) validator
  19. Enforced maximum number of failed login attempts with BEST PRACTICES countermeasures against both dictionary and DoS attacks!
  20. All database access done through prepared (bound) statements!

Примечание: эти последние несколько пунктов представляют собой излишний уровень сверхвысокой безопасности нет, который вам не нужен для вашего веб-приложения. Если библиотека аутентификации не соответствует этим стандартам безопасности на 100%, НЕ ИСПОЛЬЗУЙТЕ ЕЕ!

Недавние громкие примеры безответственных программистов, которые оставили их вне своего программного обеспечения: № 17 - это то, как электронная почта Сары Пэйлин AOL была взломана во время президентской кампании; неприятная комбинация № 18 и № 19 была виновником недавнего взлома аккаунтов в Твиттере Бритни Спирс, Барака Обамы, Fox News и других; и только # 20 - это то, как китайским хакерам удалось украсть 9 миллионов единиц личной информации с более чем 70 000 корейских веб-сайтов в одном автоматическом взломе в 2008 году.

Эти атаки не являются операцией на головном мозге. Если вы оставите свои задние двери настежь открытыми, вы не должны вводить себя в заблуждение ложным чувством безопасности, запирая переднюю. Более того, если вы достаточно серьезно относитесь к кодированию, чтобы выбрать фреймворк передового опыта, такой как CodeIgniter, вы должны сделать это ради себя, по крайней мере, правильно выполнить большинство мер безопасности базовый.


<рант>

В принципе, вот как это выглядит: Мне все равно, если библиотека auth предлагает множество функций, расширенное управление ролями, совместимость с PHP4, красивые шрифты CAPTCHA, таблицы стран, полные административные панели, навороты - если библиотека действительно делает мой сайт менее безопасный by не следуя лучшим практикам. Это пакет аутентификация; он должен делать ОДНУ правильно: аутентификацию. Если ему не удается выполнить который, на самом деле он приносит больше вреда, чем пользы.

</rant>

/ Йенс Роланд

Йенс, вы можете взглянуть на Tank Auth, который, кажется, был создан в ответ на ваш (отличный) пост: codeigniter.com/forums/viewthread/110993

Richard M 03.08.2009 18:50

Redux больше не поддерживается, и я цитирую: «Он содержит ошибки, отсутствующие функции и дрянной код, поэтому я действительно рекомендую избегать его использования». - codeigniter.com/forums/viewthread/145342

Ben 21.07.2010 08:28

Можете ли вы обновить этот пост и сравнить с Ион-Аут (производным от dx-auth)? Похоже, что ion-auth на данный момент более актуален и активен, чем tank-auth. Я хочу знать с точки зрения безопасности, так ли он хорош, как Tank-auth или нет, потому что у него есть некоторые дополнительные функции, которые могут быть полезны.

Vijay 13.05.2011 09:53

Все эти библиотеки используют mysql .. однако я использую MongoDb, которая является базой данных noSql. Есть ли библиотека, которая работает с MoongoDB? Я попытался преобразовать одну из вышеперечисленных библиотек для вставки в MongoDB вместо MySql, но она становится слишком сложной, и мне хотелось бы узнать библиотеку, которая уже делает это.

Ninja 19.10.2011 08:52

Несмотря на то, что она устарела, информация, содержащаяся в этом сообщении, представляет собой Лучший сводку того, что вы должны ожидать от вашего механизма аутентификации. Спасибо.

ack__ 07.09.2012 02:26

Не могли бы вы объяснить мне в №9, что именно вы имеете в виду на простом примере?

ltdev 22.05.2013 16:37

@Lykos: Конечно - пользовательские данные будут специфичными для аутентификации данными, такими как UserID, UserName, Email, PasswordHash, LastLoginTime и т. д. Данные профиля должны храниться в отдельной таблице БД и могут быть любыми, в зависимости от конкретного приложения. Сюда могут входить такие вещи, как день рождения, пол, родной город, оценка репутации и т. д. Таким образом, разработчики приложений могут изменять таблицу ProfileData любым способом, не беспокоясь о внезапном выходе из строя системы аутентификации.

Jens Roland 25.05.2013 20:28

Спасибо за ответ! Я пытаюсь создать простую настраиваемую библиотеку аутентификации (которая использует MY_Model для всей грязи) для некоторых проектов в моем колледже, и я ищу некоторые рекомендации / простые библиотеки аутентификации, чтобы получить некоторые идеи. Вы знаете какие-нибудь простые примеры или учебные пособия?

ltdev 26.05.2013 16:25

@Lykos: В этом нет ничего простого - auth полон маленьких сюрпризов и подводных камней, и любой учебник, претендующий на «простоту», обязательно приведет вас к неприятностям. Я бы посоветовал прочитать исходный код как минимум четырех лучших библиотек аутентификации для выбранной вами платформы.

Jens Roland 27.05.2013 00:01

Три года спустя я не уверен, что спасибо auth по-прежнему лучшее решение. Проект постепенно устарел, и другие ушли. (Ион Auth)

bottleboot 07.08.2013 12:45

Я разработчик Redux Auth, и некоторые из упомянутых вами проблем были исправлены в бета версии 2. Вы также можете скачать его с официального сайта вместе с образцом приложения.

  • Requires autoloading (impeding performance)
  • Uses the inherently unsafe concept of 'security questions'. Dealbreaker!

Вопросы безопасности теперь не используются, и была введена более простая система забытых паролей.

  • Return types are a bit of a hodgepodge of true, false, error and success codes

Это было исправлено в версии 2 и возвращает логические значения. Я ненавидел солянку так же сильно, как ты.

  • Doesn't hook into CI's validation system

В примере приложения используется система проверки CI.

  • Doesn't allow a user to resend a 'lost password' code

Работа в процессе

Я также реализовал некоторые другие функции, такие как просмотры электронной почты, это дает вам возможность использовать помощники CodeIgniter в своих письмах.

Работа над ним все еще продолжается, поэтому, если есть еще предложения, продолжайте их присылать.

-Попкорн

Ps: Спасибо, что порекомендовали Redux.

Просто бегло просмотрел ветку форума CI и дорожную карту. Выглядит хорошо - что касается «динамических» солей, я рекомендую объединить (дата регистрации). (хеш-ключ конфигурационного файла). (код или пароль) для предотвращения радужных таблиц и перебора украденной базы данных

Jens Roland 29.01.2009 14:06

Кроме того, у меня есть некоторые мысли о передовых методах аутентификации (stackoverflow.com/questions/549/…) и регулировании ботнета (stackoverflow.com/questions/479233/…), которые вы, возможно, захотите перебрать.

Jens Roland 29.01.2009 14:10

Ion_auth! Выглядит очень многообещающе и занимает мало места! Мне нравится..

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

Ion Auth отлично работает и у меня, есть все, что мне нужно, и ничего лишнего (например, секретные вопросы и тому подобное).

SolidSmile 30.06.2010 17:43

Ion Auth выглядит лидером с точки зрения использования, возможностей и легкости.

pbreitenbach 07.07.2010 16:43

Я пробовал как Tank Auth, так и Ion Auth, и могу сказать, что код Tank Auth намного чище, проще для понимания и легче расширять, чем Ion Auth. С другой стороны, Ion Auth поддерживает «роли».

Jonathan 11.10.2011 14:06

Обратите внимание, что «исчерпывающий список» Йенса Роланда не включает роли пользователей. Если вы заинтересованы в назначении разных ролей пользователей (например, admin / user или admin / editor / user), эти библиотеки позволяют это:

  • Ion_Auth (перезапись Redux)
  • Redux
  • Backend Pro

Tank_Auth (№1 выше в списке Йенса) не имеет пользовательских ролей. Я понимаю, что это не совсем часть аутентификации, но поскольку

  • аутентификация и управление ролями обрабатываются при загрузке страницы
  • Оба связаны с безопасностью
  • Для обоих можно использовать одну и ту же таблицу / модель.
  • Оба могут быть настроены для загрузки в конструкторе контроллера (или даже для автозагрузки).

Имеет смысл иметь одну библиотеку для обработки обеих, если вам это нужно. Перехожу на Ion_Auth с Tank_Auth из-за этого.

Ion_Auth прекрасно работает с CI 2.1 и DataMapper ORM

user482594 01.05.2012 07:47

Ion_Auth превосходит tank_auth в основном по двум причинам: роли пользователя и документация, эти две отсутствуют в tank_auth.

Tank Auth выглядит неплохо, но документация - это всего лишь одностраничное объяснение того, как установить, плюс быстрый просмотр каждого файла PHP. По крайней мере, это все, что я нашел после большого количества поисков в Google. Возможно, что люди имеют в виду выше, когда говорят, что Tank Auth хорошо документирован, так это то, что код хорошо прокомментирован. Это хорошо, но отличается от документации. Было бы неплохо иметь некоторую документацию о том, как интегрировать функции Tank Auth с вашим существующим кодом.

Я пробую Ion_Auth и ценю это, кстати ...

SimpleLoginSecure Делает аутентификацию простой и безопасной.

Я наткнулся на Flexi Auth (http://haseydesign.com/flexi-auth/). Выглядит очень многообещающе, и я начал им пользоваться. У него чудесные черты. Полностью интегрируется с CI и поставляется с двумя разными библиотечными файлами, один из которых очень загружен всеми функциями, а другой содержит только проверки.

Одним из лучших является то, что недавно зарегистрированный участник получает временный доступ к сайту на определенный период времени, пока он не нажмет на ссылку в своем электронном письме и не активируется.

Спасибо за эту ссылку. Есть еще одна хорошая функция - Flexi Cart haseydesign.com/flexi-cart.

Vi_real 09.05.2019 22:31

Другие вопросы по теме