Как выбрать библиотеку аутентификации для 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, но она действительно недостаточно безопасна
- очень разреженная онлайн-документация (незначительная проблема здесь, так как код хорошо документирован и интуитивно понятен)
оригинальный ответ:
Я также реализовал свой собственный (в настоящее время около 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 сделано право
вот мой минимальный необходимый список функций из библиотеки аутентификации. Это также подмножество списка функций моей собственной библиотеки;)
- малюсенький след ноги с опционным испытанием реализация
- полная документация
- Автозагрузка не требуется. Just-in-time загрузка библиотек для производительности
- поддержка языковых файлов; нет жестко закодированных строк
- reCAPTCHA поддерживается, но необязательно
- Порекомендованное истинное случайное поколение соли (например используя random.org или случайным.ирб.hr)
- дополнительные дополнения для поддержки 3rd party login (OpenID, Facebook Connect, аккаунт Google и т. д.)
- войти с помощью имени пользователя или электронной почты
- разделение данных пользователя и профиля
- письма для активации и потерял пароли
- функция автоматического входа в cookie
- настраиваемый phpass для хэширования (правильно посоленный, конечно!)
- хэширования паролей
- хеширование кодов автологинов
- хеширование потерянных кодов паролей
- крючки в систему проверки CI
- нет вопросов безопасности!
- принудительная сильная политика паролей на стороне сервера с дополнительным валидатором на стороне клиента (Javascript)
- принудительное максимальное количество неудачных попыток входа с лучшие методы контрмер против словарных и DoS-атак!
- весь доступ к базе данных осуществляется через готовые (направление) заявления!
примечание: эти последние несколько пунктов не сверхвысокий уровень безопасности, который вам не нужен для вашего веб-приложения. если библиотека аутентификации не соответствует этим стандартам безопасности 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.
Я разработчик 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 с вашим существующим кодом.