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

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

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

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

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

Tank Auth

Pros

  • Полнофункциональный
  • Исходный след (20 файлов) с учетом набора функций
  • Очень хорошая документация
  • Простой и элегантный дизайн базы данных (всего 4 таблицы DB)
  • Большинство функций являются необязательными и легко настраиваются
  • Поддержка языковых файлов
  • Поддержка reCAPTCHA
  • Крючки в систему проверки CI
  • Активационные электронные письма
  • Войдите в систему с помощью электронной почты, имени пользователя или обоих (настраиваемых)
  • Неактивированные учетные записи автоматически истекают
  • Простая, но эффективная обработка ошибок
  • Использует phpass для хэширования (а также хэширует коды автологинов в БД)
  • Не использует вопросы безопасности
  • Разделение данных пользователя и профиля очень хорошее
  • Очень разумная модель безопасности вокруг неудачных попыток входа в систему (хорошая защита от ботов и DoS-атак)

(Малые) Против

  • Потерянные пароли не хэшируются в БД
  • Включает родной (плохой) CAPTCHA, который хорош для тех, кто не хочет зависеть от службы RECAPTCHA, принадлежащей Google (Google), но она действительно недостаточно безопасна
  • Очень редкая онлайн-документация (незначительная проблема здесь, поскольку код хорошо документирован и интуитивно понятен)

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


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

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

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

DX Auth

Pros

  • Очень полно
  • Средний размер (25+ файлов), но ему удается чувствовать себя довольно тонким
  • Отличная документация, хотя некоторые из них слегка сломаны.
  • Поддержка языковых файлов
  • Поддержка reCAPTCHA
  • Крючки в систему проверки CI
  • Активационные электронные письма
  • Неактивированные учетные записи автоматически истекают
  • Предлагает grc.com для солей (неплохо для PRNG)
  • Запрет с сохраненными строками «причины»
  • Простая, но эффективная обработка ошибок

Cons

  • Только позволяет пользователям «сбросить» потерянный пароль (вместо того, чтобы позволить им выбрать новый при реактивации)
  • Модель псевдо-событий Homebrew – хорошее намерение, но не соответствует значению
  • Два поля пароля в таблице пользователей, плохой стиль
  • Использует две отдельные пользовательские таблицы (одна для пользователей «temp» – неоднозначная и избыточная)
  • Использует потенциально опасное хеширование md5
  • Не удалось выполнить попытку входа в систему только по IP, а не по имени пользователя – небезопасно!
  • Ключ Autologin не хеширован в базе данных – практически такой же опасный, как хранение паролей в открытом виде!
  • Система ролей – полная беспорядок: функция is_admin с жестко закодированными именами ролей, is_role полный беспорядок, check_uri_permissions – беспорядок, вся таблица разрешений – плохая идея (URI может изменять и отображать страницы незащищенными, разрешения всегда должны храниться точно где чувствительная логика). Dealbreaker!
  • Включает родной (плохой) CAPTCHA
  • Интерфейс функции reCAPTCHA является беспорядочным

FreakAuth Light

Pros

  • Очень полно
  • В основном достаточно хорошо документированный код
  • Разделение данных пользователя и профиля – приятное прикосновение
  • Крючки в систему проверки CI
  • Активационные электронные письма
  • Поддержка языковых файлов
  • Активно разработан

Cons

  • Чувствует себя немного раздутым (50+ файлов)
  • И все же ему не хватает автоматического входа в cookie (!)
  • Не поддерживает логины с именем пользователя и электронной почтой.
  • Кажется, есть проблемы с символами UTF-8
  • Требуется много автозагрузка (препятствующая производительности)
  • Плохой файл с микроуровневой конфигурацией
  • Ужасное разделение View-Controller с большим количеством программной логики в представлении и вывода жестко закодированных в контроллеры. Dealbreaker!
  • Плохой HTML-код во включенных представлениях
  • Включает нестандартную CAPTCHA
  • Прокомментировал отладочные эхо во всем мире
  • Заставляет определенную структуру папок
  • Заставляет определенную библиотеку Ajax (может быть переключен, но не должен быть там в первую очередь)
  • Максимальное ограничение при попытках входа в систему – ОЧЕНЬ небезопасно! Dealbreaker!
  • Проверка учетных данных
  • Использует потенциально опасное хеширование md5

pc_user

Pros

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

Cons

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

Свежий Powered

Pros

  • Малый размер (6 файлов)

Cons

  • Не хватает многих важных функций. Dealbreaker!
  • Все жестко закодировано. Dealbreaker!

Redux / Ion Auth

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

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

Pros

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

Cons

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

SimpleLoginSecure

Pros

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

Cons

  • Только вход в систему, выход из системы, создание и удаление
  • Не хватает многих важных функций. Dealbreaker!
  • Больше отправной точки, чем библиотека

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

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

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

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

  1. Крошечный отпечаток с возможностью выборочной проверки
  2. Полная документация
  3. Автозагрузка не требуется. Быстрая загрузка библиотек для повышения производительности
  4. Поддержка языковых файлов; нет жестко закодированных строк
  5. reCAPTCHA поддерживается, но необязательно
  6. Рекомендуемая генерация случайной соли TRUE (например, с использованием random.org или random.irb.hr)
  7. Дополнительные надстройки для поддержки стороннего входа (OpenID, Facebook Connect, Google Account и т. Д.)
  8. Войти с использованием либо имени пользователя, либо электронной почты
  9. Разделение данных пользователя и профиля
  10. Электронная почта для активации и утерянных паролей
  11. Автоматическая функция входа в cookie
  12. Конфигурируемый phpass для хеширования (правильно соленый, конечно!)
  13. Хеширование паролей
  14. Хеширование автологов
  15. Хеширование потерянных паролей
  16. Крючки в систему проверки CI
  17. НЕТ вопросов безопасности!
  18. Надежная надежная политика паролей на стороне сервера, с дополнительным валидатором на стороне клиента (Javascript)
  19. Принудительное максимальное количество неудачных попыток входа в систему с помощью BEST PRACTICES контрмер против как словарных, так и DoS-атак!
  20. Весь доступ к базе данных осуществляется через подготовленные (связанные) заявления!

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

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

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


<Напыщенная>

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

</ Декламация>

/ Йенс Роланд

Обратите внимание, что «всеобъемлющий список» Йенса Роланда не включает роли пользователя. Если вы заинтересованы в назначении разных пользовательских ролей (например, 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. Вы также можете загрузить это с официального сайта с помощью примера приложения.

  • Требуется автозагрузка (препятствующая производительности)
  • Использует небезопасную концепцию «вопросов безопасности». Dealbreaker!

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

  • Типы возвращаемых данных – это немного мешанина истинных, ложных, ошибок и кодов успеха.

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

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

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

  • Не позволяет пользователю повторно отправить код «потерянного пароля»

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

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

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

-Попкорн

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

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

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

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

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

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

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

Также взгляните на BackendPro

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

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

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

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

Я пытаюсь Ion_Auth и ценю это, кстати …

SimpleLoginSecure упрощает и упрощает аутентификацию.