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

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

Ответ 1

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

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

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

Tank Auth

Доводы

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

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

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

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


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

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

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

DX Auth

Доводы

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

против

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

FreakAuth Light

Доводы

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

против

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

pc_user

Доводы

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

против

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

Свежий Powered

Доводы

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

против

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

Redux/Ion Auth

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

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

Доводы

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

против

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

SimpleLoginSecure

Доводы

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

против

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

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

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

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

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

  • Крошечный отпечаток с опциональной тестовой реализацией
  • Полная документация
  • Автозагрузка не требуется. Быстрая загрузка библиотек для производительности
  • Поддержка языковых файлов; без жестко закодированных строк
  • reCAPTCHA поддерживается, но необязательно
  • Рекомендуемая генерация случайной соли TRUE (например, с использованием random.org или random.irb.hr)
  • Дополнительные дополнения для поддержки стороннего входа (OpenID, Facebook Connect, Google Account и т.д.).
  • Войти с использованием имени пользователя или электронной почты
  • Разделение данных пользователя и профиля
  • Электронные письма для активации и утерянных паролей
  • Функция автоматического входа в систему cookie
  • Конфигурируемый phpass для хеширования (правильно соленый, конечно!)
  • Хеширование паролей
  • Хеширование автологичных кодов
  • Хеширование кодов потерянных паролей
  • Захватывает систему проверки подлинности CI
  • НЕТ вопросов безопасности!
  • Надежная надежная политика паролей на стороне сервера, с необязательным валидатором на стороне клиента (Javascript)
  • Принудительное максимальное количество неудачных попыток входа в систему с помощью контрмер BEST PRACTICES для обоих словарей и DoS-атак!
  • Доступ к базе данных осуществляется через подготовленные (связанные) операторы!

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

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

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


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

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

</& напыщенная GT;

/Йенс Роланд

Ответ 2

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

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

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

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

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

Ответ 4

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

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

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

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

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

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

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

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

Незавершенное производство

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

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

-Popcorn

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

Ответ 5

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

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

Ответ 6

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

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

Ответ 7

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

Ответ 9

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

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

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

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

Ответ 10

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

Ответ 11

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

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