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

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

11 ответов


Обновление (14 Мая 2010):

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

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

Танк Auth

плюсы

  • полнофункциональный
  • Lean footprint (20 файлов) с учетом набора функций
  • очень хорошая документация
  • простой и элегантный дизайн базы данных (всего 4 таблицы БД)
  • большинство функций являются необязательными и легко настраиваются
  • поддержка языковых файлов
  • reCAPTCHA поддерживается
  • крючки в систему проверки CI
  • письма активации!--19-->
  • вход с электронной почтой, именем пользователя или обоими (настраивается)
  • неактивированные учетные записи автоматически истекает
  • простая, но эффективная обработка ошибок
  • использует phpass для хэширования (а также хэши кодов автологинов в БД)
  • не использует вопросы безопасности
  • разделение данных пользователя и профиля очень приятно
  • очень разумная модель безопасности вокруг неудачных попыток входа в систему (хорошая защита от ботов и DoS-атак)

(Незначительные) Минусы

  • потерянные коды паролей не хэшируются в DB
  • включает в себя родную (бедную) капчу, которая хороша для тех, кто не хочет зависеть от (принадлежащей Google) службы reCAPTCHA, но она действительно недостаточно безопасна
  • очень разреженная онлайн-документация (незначительная проблема здесь, так как код хорошо документирован и интуитивно понятен)

скачать танк Auth здесь


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

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

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

DX Auth

плюсы

  • очень полнофункциональный
  • средний след (25 + файлов), но удается чувствовать себя довольно тонким
  • отличная документация, хотя некоторые из них на немного ломаном английском языке
  • поддержка языковых файлов
  • reCAPTCHA поддерживается
  • крючки в систему проверки CI
  • письма активации!--19-->
  • неактивированные учетные записи автоматически истекает
  • предлагает grc.com для солей (неплохо для PRNG)
  • запрет с сохраненными строками "причина"
  • простая, но эффективная обработка ошибок

минусы

  • только позволяет пользователям "сбросить" потерянный пароль (вместо того, чтобы позволить им выбрать новый при повторной активации)
  • доморощенная псевдо-модель событий-хорошее намерение, но пропускает отметку
  • два поля пароля в таблице пользователя, плохой стиль
  • использует две отдельные таблицы пользователей (одна для "временных" пользователей - неоднозначная и избыточная)
  • использует потенциально небезопасное хеширование md5
  • ошибка входа в систему попытки хранятся только по IP, а не по имени пользователя-небезопасно!
  • ключ Autologin не хэшируется в базе данных-практически так же небезопасно, как хранение паролей в открытом тексте!
  • система ролей-полный беспорядок: функция is_admin с жестко закодированными именами ролей, is_role-полный беспорядок, check_uri_permissions-беспорядок, вся таблица разрешений-плохая идея (URI может изменять и отображать страницы без защиты; разрешения всегда должны храниться именно там, где чувствительная логика). Скатертью дорожка!
  • включает в себя родной (бедный) CAPTCHA
  • интерфейс функции reCAPTCHA грязный

FreakAuth Light

плюсы

  • очень полнофункциональный
  • в основном довольно хорошо документированный код
  • разделение данных пользователя и профиля-приятный штрих
  • крючки в систему проверки CI
  • письма активации!--19-->
  • поддержка языковых файлов
  • активно развивается

минусы

  • чувствует себя немного раздутым (50+ файлов)
  • и все же ему не хватает автоматического входа в cookie (!)
  • не поддерживает логины с именем пользователя и по электронной почте
  • кажется, есть проблемы с символами UTF-8
  • требует много автозапуска (препятствуя производительности)
  • плохо микроуровне конфиг файл
  • ужасный вид-разделение контроллера, с большим количеством логики программы в представлениях и вывода жестко закодированных в контроллеры. Скатертью дорожка!
  • плохой HTML код в вид
  • включает некачественную капчу
  • прокомментировал отладочные Эхо везде
  • заставляет определенную структуру папок
  • заставляет определенную библиотеку Ajax (может быть переключена, но не должна быть там в первую очередь)
  • нет максимального ограничения на попытки входа в систему-очень небезопасно! Скатертью дорожка!
  • угоны форма проверки
  • использует потенциально небезопасное хеширование md5

рс_пользовательский

плюсы

  • хороший набор функций для его крошечного следа
  • легкий, без раздувания (3 файла)
  • элегантный автоматический вход cookie
  • поставляется с дополнительной реализацией теста (nice touch)

минусы

  • использует старый синтаксис базы данных CI (менее безопасный)
  • не подключается к системе проверки CI
  • своего рода неинтуитивный статус (роль) системы (индексы вверх ногами-непрактично)
  • использует потенциально небезопасное хэширование sha1

Свежо Питание

плюсы

  • малый след ноги (6 файлов)

минусы

  • не хватает много существенных особенностей. Скатертью дорожка!
  • все жестко. Скатертью дорожка!

Redux / Ion Auth

по данным CodeIgniter wiki, Redux было прерывано, но вилка Auth Иона идет сильный:https://github.com/benedmunds/CodeIgniter-Ion-Auth

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

плюсы

  • легкий и простой в интеграции с CodeIgniter
  • поддержка отправки электронной почты непосредственно из библиотеки
  • хорошо документированный онлайн и хороший активный dev / сообщество пользователей
  • просто реализовать в проект

минусы

  • более сложная схема БД, чем некоторые другие
  • документации не хватает деталей в некоторых областях

SimpleLoginSecure

плюсы

  • крошечный след (4 файлов)
  • минималистичный, абсолютно не раздувается
  • использует phpass для хэширования (отлично)

минусы

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

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

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

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

вот мой минимальный необходимый список функций из библиотеки аутентификации. Это также подмножество списка функций моей собственной библиотеки;)

  1. малюсенький след ноги с опционным испытанием реализация
  2. полная документация
  3. Автозагрузка не требуется. Just-in-time загрузка библиотек для производительности
  4. поддержка языковых файлов; нет жестко закодированных строк
  5. reCAPTCHA поддерживается, но необязательно
  6. Порекомендованное истинное случайное поколение соли (например используя random.org или случайным.ирб.hr)
  7. дополнительные дополнения для поддержки 3rd party login (OpenID, Facebook Connect, аккаунт Google и т. д.)
  8. войти с помощью имени пользователя или электронной почты
  9. разделение данных пользователя и профиля
  10. письма для активации и потерял пароли
  11. функция автоматического входа в cookie
  12. настраиваемый phpass для хэширования (правильно посоленный, конечно!)
  13. хэширования паролей
  14. хеширование кодов автологинов
  15. хеширование потерянных кодов паролей
  16. крючки в систему проверки CI
  17. нет вопросов безопасности!
  18. принудительная сильная политика паролей на стороне сервера с дополнительным валидатором на стороне клиента (Javascript)
  19. принудительное максимальное количество неудачных попыток входа с лучшие методы контрмер против словарных и DoS-атак!
  20. весь доступ к базе данных осуществляется через готовые (направление) заявления!

примечание: эти последние несколько пунктов не сверхвысокий уровень безопасности, который вам не нужен для вашего веб-приложения. если библиотека аутентификации не соответствует этим стандартам безопасности 100%, не используйте ее!

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

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


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

/Йенс Ролан


обратите внимание, что" полный список " Jens Roland не включает роли пользователей. Если вы заинтересованы в назначении различных ролей пользователей (например, admin / user или admin / editor / user), эти библиотеки позволяют:

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

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

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

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


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

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


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

  • требует самозарядные (воспрепятствование исполнению)
  • использует изначально небезопасную концепцию "вопросов безопасности". Скатертью дорожка!

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

  • возвращаемые типы-это немного мешанина кодов true, false, error и success

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

  • не подключается к системе проверки CI

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

  • не позволяет пользователю повторно отправлять 'забыли пароль' код

работа продолжается

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

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

-попкорн

Ps: Спасибо за рекомендацию Redux.


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

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


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

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


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


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


посмотрите BackendPro

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

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

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


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


Я пытаюсь Ion_Auth и ценю, кстати...

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