Ответ 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 (правда, это действительно недостаточно безопасно
- Очень редкая онлайн-документация (незначительная проблема здесь, поскольку код хорошо документирован и интуитивно понятен)
Оригинальный ответ:
Я тоже реализовал свои собственные (в настоящее время около 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;
/Йенс Роланд