Я бачу, що їх небагато . Які з них підтримуються та прості у використанні? Які їх плюси і мінуси?
Я бачу, що їх небагато . Які з них підтримуються та прості у використанні? Які їх плюси і мінуси?
Відповіді:
Виявляється, російський розробник Ілля Конюхов підхопив рукавицю після прочитання цього і створив нову авторську бібліотеку для CI на базі DX Auth, дотримуючись рекомендацій та вимог, поданих нижче.
І отриманий танк Auth виглядає як відповідь на питання ОП. Я збираюся вийти на кінцівку тут і зателефонувати Tank Auth найкращою бібліотекою аутентифікації для CodeIgniter, доступної сьогодні. Це непомітна бібліотека, яка має всі необхідні функції, і жоден з тих, хто вам не потрібен:
Плюси
- Повнофункціональний
- Худий слід (20 файлів) з урахуванням набору функцій
- Дуже хороша документація
- Простий та елегантний дизайн бази даних (всього 4 таблиці БД)
- Більшість функцій необов’язкові та легко налаштовуються
- Підтримка мовних файлів
- reCAPTCHA підтримується
- Приєднується до системи перевірки CI
- Електронні листи для активації
- Увійти за допомогою електронної пошти, імені користувача або обох (налаштовується)
- Неактивовані облікові записи автоматично закінчуються
- Просте, але ефективне управління помилками
- Використовує phpass для хешування (а також хеширует коди автологічного входу в БД)
- Не використовує питань безпеки
- Поділ даних користувача та профілю дуже приємно
- Дуже розумна модель безпеки навколо невдалих спроб входу (хороший захист від ботів і DoS-атак)
(Незначні) Мінуси
- Коди втрачених паролів не хешируються в БД
- Включає в себе рідну (бідну) CAPTCHA, що приємно для тих, хто не хоче залежати від (у власності Google) послуги reCAPTCHA, але це насправді недостатньо безпечно
- Дуже рідкісна онлайн-документація (тут незначна проблема, оскільки код добре документований та інтуїтивно зрозумілий)
Оригінальна відповідь:
Я також реалізував своє (зараз приблизно 80% зроблено після кількох тижнів роботи). Я спробував усі інші спочатку; FreakAuth Light, DX Auth, Redux, SimpleLogin, SimpleLoginSecure, pc_user, Fresh Powered та ще декілька. Жоден з них не дорівнював ІМО, або їм бракувало основних рис, по суті НЕБЕЗПЕЧНИХ, або занадто роздуті на мій смак.
Насправді я зробив детальний опис усіх бібліотек аутентифікації для CodeIgniter, коли тестував їх (відразу після Нового року). FWIW, я поділюся з вами:
Плюси
- Дуже повнофункціональний
- Середній слід (25+ файлів), але вдається відчувати себе досить струнким
- Відмінна документація, хоча деякі є трохи розбитими англійською мовою
- Підтримка мовних файлів
- reCAPTCHA підтримується
- Приєднується до системи перевірки CI
- Електронні листи для активації
- Неактивовані облікові записи автоматично закінчуються
- Пропонує grc.com для солей (непогано для PRNG)
- Заборона із збереженими рядками 'розум'
- Просте, але ефективне управління помилками
Мінуси
- Дозволяє лише користувачам "скинути" втрачений пароль (а не дозволяти їм вибрати новий після повторної активації)
- Модель псевдоподії в домашніх умовах - хороший намір, але не вистачає позначки
- Два поля паролів у користувацькій таблиці, поганий стиль
- Використовує дві окремі таблиці користувачів (одна для 'temp' користувачів - неоднозначна і зайва)
- Використовує потенційно небезпечний хеджування md5
- Невдалі спроби входу зберігаються лише IP, а не ім'ям користувача - небезпечно!
- Ключ автоматичного входу не хеширується в базі даних - практично так само небезпечно, як зберігання паролів у чіткому тексті!
- Система ролей - це повний безлад: функція is_admin із жорстко кодованими іменами ролей, is_role - повний безлад, check_uri_permissions - безлад, вся таблиця дозволів - це погана ідея (URI може змінювати та робити сторінки незахищеними; дозволи повинні завжди зберігатися точно де чутлива логіка). Dealbreaker!
- Включає рідну (бідну) CAPTCHA
- Інтерфейс функції reCAPTCHA безладний
Плюси
- Дуже повнофункціональний
- Переважно досить добре задокументований код
- Розмежування даних користувача та профілю є приємним штрихом
- Приєднується до системи перевірки CI
- Електронні листи для активації
- Підтримка мовних файлів
- Активно розвинений
Мінуси
- Відчуває себе трохи роздутим (50+ файлів)
- І все ж йому бракує автоматичного входу файлів cookie (!)
- Не підтримує вхід із іменем користувача та електронною поштою
- Здається, є проблеми з символами UTF-8
- Потрібно багато автозавантаження (перешкоджаючи продуктивності)
- Конфігураційний файл, керований мікроконтролером
- Жахливий поділ контролера View-Controller, з великою кількістю логіки програми у видах та виведенням жорсткого коду в контролери. Dealbreaker!
- Поганий HTML-код у включених представленнях
- Включає нестандартну CAPTCHA
- Коментована налагодження перегукується скрізь
- Формує певну структуру папок
- Формує конкретну бібліотеку Ajax (її можна переключити, але не повинно бути там)
- Немає максимального обмеження для спроб входу - ДУЖЕ небезпечно! Dealbreaker!
- Викрадення формують перевірку
- Використовує потенційно небезпечний хеджування md5
Плюси
- Гарний набір функцій для його крихітного сліду
- Легкий, без набряку (3 файли)
- Елегантний автоматичний вхід у файл cookie
- Поставляється з додатковою реалізацією тесту (приємний дотик)
Мінуси
- Використовує старий синтаксис бази даних CI (менш безпечний)
- Не підключається до системи перевірки CI
- Своєрідна неінтуїтивна система (роль) системи (індекси догори дном - непрактично)
- Використовує потенційно небезпечне перемішування ша1
Плюси
- Маленький слід (6 файлів)
Мінуси
- Не вистачає безлічі суттєвих особливостей. Dealbreaker!
- Все важко закодовано. Dealbreaker!
Згідно з вікі CodeIgniter , Redux було припинено, але вилка Ion Auth стає міцною: https://github.com/benedmunds/CodeIgniter-Ion-Auth
Ion Auth - це чудова бібліотека, яка не надто важка або недостатньо розвинена. У більшості випадків його набір функцій більш ніж задовольнятиме вимоги проекту.
Плюси
- Легкий і простий в інтеграції з CodeIgniter
- Підтримує надсилання електронних листів безпосередньо з бібліотеки
- Добре задокументоване в Інтернеті та хороша активна спільнота розробників / користувачів
- Простий в реалізації проект
Мінуси
- Більш складна схема БД, ніж деякі інші
- У документації бракує деталей у деяких сферах
Плюси
- Крихітний слід (4 файли)
- Мінімалістичний, абсолютно ніяких нальотів
- Використовує phpass для хешування (відмінно)
Мінуси
- Тільки увійдіть, вийдіть, створюйте та видаляйте
- Не вистачає безлічі суттєвих особливостей. Dealbreaker!
- Більше вихідної точки, ніж бібліотека
Не зрозумійте мене неправильно: я не хочу зневажати будь-яку з перерахованих вище бібліотек; Я дуже вражений тим, що досягли їх розробники, і наскільки далеко кожен з них зайшов, і я не звертаюсь до того, що використовую частину свого коду для створення мого власного. Що я говорю, іноді в цих проектах фокус переходить від основної «потреби» (наприклад, жорсткої практики безпеки) до більш м'якої «приємної», і саме це я сподіваюся виправити .
Тому: повернутися до основ.
Ось мій МІНІМАЛЬНИЙ необхідний список функцій бібліотеки аутентифікації. Це також є підмножиною списку моїх власних бібліотек;)
- Крихітний слід із додатковою реалізацією тесту
- Повна документація
- Автозавантаження не потрібно. Своєчасне завантаження бібліотек для продуктивності
- Підтримка мовних файлів; жодних жорстких рядків
- підтримується reCAPTCHA, але необов'язково
- Рекомендована ІСТИННА генерація випадкової солі (наприклад, використання random.org або random.irb.hr)
- Додаткові додатки для підтримки входу третьої сторони (OpenID, Facebook Connect, обліковий запис Google тощо)
- Увійдіть, використовуючи ім'я користувача або електронну пошту
- Поділ даних користувача та профілю
- Електронні листи для активації та втрачені паролі
- Функція автоматичного входу в файл cookie
- Налаштований phpass для хешування (звичайно правильно засолений!)
- Захоплення паролів
- Штрихування кодів автологін
- Захоплення втрачених кодів паролів
- Приєднується до системи перевірки CI
- Ніяких питань безпеки!
- Закріплена сильна політика паролів на сервері, з додатковим валідатором на стороні клієнта (Javascript)
- Примусова максимальна кількість невдалих спроб входу з НАЙКРАЩИМИ ПРАКТИКАМИ контрзаходи щодо словника та DoS-атак!
- Весь доступ до бази даних здійснюється через підготовлені (зв'язані) заяви!
Примітка: останні кілька пунктів не є надмірними надмірними рівнями безпеки, які вам не потрібні для вашого веб-додатка. Якщо бібліотека аутентифікації не відповідає цим стандартам безпеки на 100%, НЕ ВИКОРИСТОВУЙТЕ!
Останні гучні приклади безвідповідальних кодерів, які залишили їх поза своїм програмним забезпеченням: №17 - це те, як під час президентської кампанії було зламано повідомлення AOL про Сару Пейлін; противна комбінація №18 та №19 стала винуватцем недавно, коли в Twitter були взломані облікові записи Брітні Спірс, Барака Обами, Fox News та інших; і №20 - це те, як китайським хакерам вдалося викрасти 9 мільйонів предметів особистої інформації з понад 70 000 корейських веб-сайтів за один автоматичний злом у 2008 році.
Ці напади не є операцією на мозку. Якщо ви залишаєте задні двері широко відкритими, ви не повинні обманювати себе в помилковому почутті безпеки, зафіксувавши передні. Більше того, якщо ви досить серйозно ставитесь до кодування, щоб вибрати рамки найкращих практик, таких як CodeIgniter, ви зобов'язані самі принаймні виконати основні заходи безпеки.
<агент>
В основному, ось як це: Мені байдуже, чи авторська бібліотека пропонує купу функцій, розширене управління ролями, сумісність PHP4, гарні шрифти CAPTCHA, таблиці країн, повні панелі адміністратора, дзвіночки та свистки - якщо бібліотека насправді робить мій сайт менш захищений , не дотримуючись кращих практик. Це пакет аутентифікації ; для цього потрібно зробити ОДНУ: правильно. Якщо це не вдається зробити , що це насправді приносить більше шкоди , ніж користі.
</rant>
/ Єнс Роланд
Зауважте, що "всебічний перелік" Єнса Роланда не включає ролі користувачів. Якщо вам цікаво призначити різні ролі користувачів (наприклад, адміністратор / користувач або адміністратор / редактор / користувач), ці бібліотеки дозволяють це:
Tank_Auth (№1 вище у списку Йенса) не має ролей користувача. Я усвідомлюю, що це не зовсім частина аутентифікації, але з тих пір
Має багато сенсу мати одну бібліотеку для обох, якщо вона потрібна. Через це я переходжу на Ion_Auth з Tank_Auth.
Ion_auth! Виглядає дуже перспективно і невеликий слід! Мені подобається..
Я розробник Redux Auth, і деякі згадані вами проблеми були виправлені у бета-версії 2. Ви можете завантажити це з офіційного веб-сайту і за допомогою зразка програми.
- Потрібна автоматична завантаження (перешкоджаючи продуктивності)
- Використовується властива небезпечна концепція "питань безпеки". Dealbreaker!
Питання безпеки зараз не використовуються, а спрощена система паролів створена.
- Типи повернення - трохи мішанка справжніх, помилкових, помилок та кодів успіху
Це було виправлено у версії 2 та повертає булеві значення. Я ненавидів халяву так само, як і ти.
- Не підключається до системи перевірки CI
У зразковому додатку використовується система валідації CI.
- Не дозволяє користувачеві надсилати код "загубленого пароля"
В роботі
Я також застосував деякі інші функції, такі як перегляди електронної пошти. Це дає вам можливість використовувати помічників CodeIgniter у своїх електронних листах.
Це ще триває робота, тому, якщо є якісь пропозиції, будь ласка, продовжуйте їх надходити.
-Попкорн
Ps: Дякую, що рекомендували Redux.
Я натрапив на Flexi Auth ( http://haseydesign.com/flexi-auth/ ). Це виглядає дуже перспективно, і я почав його використовувати. Він має чудові особливості. Повністю інтегрується з CI і постачається з двома різними бібліотечними файлами, в яких один дуже важкий, завантажений усіма функціями, а другий містить лише перевірки.
Одним з найкращих є те, що нещодавно зареєстрований учасник отримує тимчасовий доступ на певний час на сайті, поки не натисне посилання зі свого електронного листа та не активується.
Можливо, ти знайдеш Redux відповідає вашим потребам. Це не зайвий набір, і він оснащений виключно голими можливостями, які потребує більшість із нас. Розробники та дописувачі були дуже суворі щодо того, який код був внесений.
Я використовую індивідуальну версію DX Auth . Я вважав його простим у використанні, надзвичайно простим у модифікації, і він має керівництво користувача (з чудовими прикладами), яке дуже схоже на Code Igniter's.
Також погляньте BackendPro
Зрештою, ви, мабуть, закінчите писати щось на замовлення, але немає нічого поганого в запозиченні понять у DX Auth, Freak Auth, BackendPro тощо.
Мій досвід роботи з пакуючими програмами полягає в тому, що вони специфічні для певних структур, і у мене виникли проблеми з інтеграцією їх у власні програми, не вимагаючи злому, тоді, якщо попередній пакет має оновлення, я повинен перенести їх у.
Я також використовую Smarty та ADOdb у своєму CI-коді, так що незалежно від того, що я завжди міг би зробити основні зміни коду.
Tank Auth виглядає добре, але документація - це лише односторінкове пояснення, як встановити, а також швидкий знос кожного файлу PHP. Принаймні, це все, що я знайшов після багато гуглінгу. Можливо, те, що люди мають на увазі вище, коли вони кажуть, що Tank Auth добре задокументовано, це те, що код добре коментується. Це гарна річ, але відрізняється від документації. Було б непогано мати документацію про те, як інтегрувати функції Tank Auth із наявним кодом.
Я намагаюся Ion_Auth і ціную це, btw ...
SimpleLoginSecure Робить автентифікацію простою та безпечною.