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






Может быть, вы найдете Redux, который вам подходит. В этом нет ничего лишнего, и он поставляется исключительно с голыми функциями, которые потребуются большинству из нас. Разработчик и участники очень строго относились к тому, какой код был добавлен.
Redux дольше поддерживается, см. Это обсуждение. codeigniter.com/forums/viewthread/145342
Ion Auth основан на Redux Auth 2, и я бы использовал именно его. PyroCMS тоже использует его. github.com/benedmunds/CodeIgniter-Ion-Auth
Я использую кастомную версию DX Auth. Я нашел его простым в использовании, чрезвычайно легким в изменении, и он имеет руководство пользователя (с отличными примерами), который очень похож на Code Igniter.
Также посмотрите BackendPro
В конечном итоге вы, вероятно, напишете что-то нестандартное, но нет ничего плохого в заимствовании концепций из DX Auth, Freak Auth, BackendPro и т. д.
Мой опыт работы с упакованными приложениями заключается в том, что они специфичны для определенных структур, и у меня возникли проблемы с их интеграцией в мои собственные приложения без необходимости взлома, тогда, если в предварительном пакете есть обновление, я должен их перенести.
Я также использую Smarty и ADOdb в своем коде CI, поэтому независимо от того, что я всегда буду делать серьезные изменения в коде.
Оказывается, российский разработчик Илья Конюхов принял вызов после прочтения этого и создал новую библиотеку авторизации для CI на основе DX Auth, следуя рекомендациям и требованиям, приведенным ниже.
И результирующий Танк Auth выглядит как ответ на вопрос OP. Я собираюсь рискнуть и назвать Tank Auth лучшей библиотекой аутентификации для CodeIgniter, доступной сегодня. Это надежная библиотека, в которой есть все необходимые вам функции и ничего лишнего:
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)
Оригинальный ответ:
Я также реализовал свой собственный (в настоящее время около 80% сделано после нескольких недель работы). Я сначала попробовал все остальные; FreakAuth Light, DX Auth, Redux, SimpleLogin, SimpleLoginSecure, pc_user, Fresh Powered и многие другие. Ни один из них не был на должном уровне, ИМО, либо им не хватало базовых функций, они были небезопасны по своей сути, либо были слишком раздутыми, на мой вкус.
На самом деле, я сделал подробный обзор всех библиотек аутентификации для CodeIgniter, когда тестировал их (сразу после Нового года). FWIW, я поделюсь с вами:
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
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
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
Pros
- Small footprint (6 files)
Cons
- Lacks a lot of essential features. Dealbreaker!
- Everything is hard-coded. Dealbreaker!
Согласно вики 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
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
Не поймите меня неправильно: Я не хочу игнорировать любую из вышеперечисленных библиотек; Я очень впечатлен тем, чего достигли их разработчики и как далеко продвинулся каждый из них, и я не прочь повторно использовать часть их кода для создания своего собственного. Я говорю о том, что иногда в этих проектах акцент смещается с основных `` необходимых вещей '' (например, жестких мер безопасности) на более мягкие `` полезные вещи '', и это то, что я надеюсь исправить. .
Поэтому: вернемся к истокам.
Вот мой МИНИМАЛЬНЫЙ необходимый список функций из библиотеки аутентификации. Это также часть списка функций моей собственной библиотеки;)
- Tiny footprint with optional test implementation
- Full documentation
- No autoloading required. Just-in-time loading of libraries for performance
- Language file support; no hard-coded strings
- reCAPTCHA supported but optional
- Recommended TRUE random salt generation (e.g. using random.org or random.irb.hr)
- Optional add-ons to support 3rd party login (OpenID, Facebook Connect, Google Account, etc.)
- Login using either username or email
- Separation of user and profile data
- Emails for activation and lost passwords
- Automatic cookie login feature
- Configurable phpass for hashing (properly salted of course!)
- Hashing of passwords
- Hashing of autologin codes
- Hashing of lost password codes
- Hooks into CI's validation system
- NO security questions!
- Enforced strong password policy server-side, with optional client-side (Javascript) validator
- Enforced maximum number of failed login attempts with BEST PRACTICES countermeasures against both dictionary and DoS attacks!
- 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
Redux больше не поддерживается, и я цитирую: «Он содержит ошибки, отсутствующие функции и дрянной код, поэтому я действительно рекомендую избегать его использования». - codeigniter.com/forums/viewthread/145342
Можете ли вы обновить этот пост и сравнить с Ион-Аут (производным от dx-auth)? Похоже, что ion-auth на данный момент более актуален и активен, чем tank-auth. Я хочу знать с точки зрения безопасности, так ли он хорош, как Tank-auth или нет, потому что у него есть некоторые дополнительные функции, которые могут быть полезны.
Все эти библиотеки используют mysql .. однако я использую MongoDb, которая является базой данных noSql. Есть ли библиотека, которая работает с MoongoDB? Я попытался преобразовать одну из вышеперечисленных библиотек для вставки в MongoDB вместо MySql, но она становится слишком сложной, и мне хотелось бы узнать библиотеку, которая уже делает это.
Несмотря на то, что она устарела, информация, содержащаяся в этом сообщении, представляет собой Лучший сводку того, что вы должны ожидать от вашего механизма аутентификации. Спасибо.
Не могли бы вы объяснить мне в №9, что именно вы имеете в виду на простом примере?
@Lykos: Конечно - пользовательские данные будут специфичными для аутентификации данными, такими как UserID, UserName, Email, PasswordHash, LastLoginTime и т. д. Данные профиля должны храниться в отдельной таблице БД и могут быть любыми, в зависимости от конкретного приложения. Сюда могут входить такие вещи, как день рождения, пол, родной город, оценка репутации и т. д. Таким образом, разработчики приложений могут изменять таблицу ProfileData любым способом, не беспокоясь о внезапном выходе из строя системы аутентификации.
Спасибо за ответ! Я пытаюсь создать простую настраиваемую библиотеку аутентификации (которая использует MY_Model для всей грязи) для некоторых проектов в моем колледже, и я ищу некоторые рекомендации / простые библиотеки аутентификации, чтобы получить некоторые идеи. Вы знаете какие-нибудь простые примеры или учебные пособия?
@Lykos: В этом нет ничего простого - auth полон маленьких сюрпризов и подводных камней, и любой учебник, претендующий на «простоту», обязательно приведет вас к неприятностям. Я бы посоветовал прочитать исходный код как минимум четырех лучших библиотек аутентификации для выбранной вами платформы.
Три года спустя я не уверен, что спасибо auth по-прежнему лучшее решение. Проект постепенно устарел, и другие ушли. (Ион Auth)
Я разработчик 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 и дорожную карту. Выглядит хорошо - что касается «динамических» солей, я рекомендую объединить (дата регистрации). (хеш-ключ конфигурационного файла). (код или пароль) для предотвращения радужных таблиц и перебора украденной базы данных
Кроме того, у меня есть некоторые мысли о передовых методах аутентификации (stackoverflow.com/questions/549/…) и регулировании ботнета (stackoverflow.com/questions/479233/…), которые вы, возможно, захотите перебрать.
Ion_auth! Выглядит очень многообещающе и занимает мало места! Мне нравится..
http://github.com/benedmunds/CodeIgniter-Ion-Auth
Ion Auth отлично работает и у меня, есть все, что мне нужно, и ничего лишнего (например, секретные вопросы и тому подобное).
Ion Auth выглядит лидером с точки зрения использования, возможностей и легкости.
Я пробовал как Tank Auth, так и Ion Auth, и могу сказать, что код Tank Auth намного чище, проще для понимания и легче расширять, чем Ion Auth. С другой стороны, Ion Auth поддерживает «роли».
Обратите внимание, что «исчерпывающий список» Йенса Роланда не включает роли пользователей. Если вы заинтересованы в назначении разных ролей пользователей (например, admin / user или admin / editor / user), эти библиотеки позволяют это:
Tank_Auth (№1 выше в списке Йенса) не имеет пользовательских ролей. Я понимаю, что это не совсем часть аутентификации, но поскольку
Имеет смысл иметь одну библиотеку для обработки обеих, если вам это нужно. Перехожу на Ion_Auth с Tank_Auth из-за этого.
Ion_Auth прекрасно работает с CI 2.1 и DataMapper ORM
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.
Если вам все еще интересно, посмотрите Tank Auth. Я только что обновил свой пост после того, как просмотрел его, и он отличный.