CodeIgniter için bir kimlik doğrulama kitaplığını nasıl seçmeliyim? [kapalı]


398

Ben orada bkz birkaç . Hangileri korunur ve kullanımı kolaydır? Artıları ve eksileri nelerdir?


8
Hâlâ ilgileniyorsanız, Tank Auth'a bakın. Ben sadece inceledikten sonra aşağıdaki benim yazı güncellendi ve mükemmel.
Jens Roland

7
Güncelleme için teşekkürler! Bu, gelecekte bu soruya gelen ziyaretçiler için değerli bilgiler olacaktır, bu yüzden kabul edilen cevabı değiştirdim.
GavinR

3
Neden ani kapanış? Altı öznel soru yönergesine çok iyi uyuyor gibi görünüyor.
Brian Ortiz

3
Yeniden açmaya aday gösterildi. Sahip olduğum bir soruyu (CI'deki hangi kimlik doğrulama sistemlerine bakmaya değer) mükemmel bir şekilde yanıtladı.
Cruachan

3
@BrianOrtiz ve Cruachan ile aynı fikirde: Neden yakın? Güzel soru ve harika cevaplar.
Peter K.

Yanıtlar:


465

Güncelleme (14 Mayıs 2010):

Anlaşılan, Rus geliştirici Ilya Konyukhov bunu okuduktan sonra dayağı aldı ve aşağıdaki önerileri ve gereksinimleri takip ederek DX Auth'a dayanan CI için yeni bir auth kütüphanesi oluşturdu.

Ve sonuçta elde edilen Tank Yetkisi OP'nin sorusunun cevabına benziyor. Burada bir uzuv çıkacağım ve Tank Auth'u bugün mevcut CodeIgniter için en iyi kimlik doğrulama kütüphanesi olarak adlandıracağım. İhtiyacınız olan tüm özelliklere sahip olan ve kullanmadığınız şişkinliklerden hiçbirine sahip olmayan sağlam bir kütüphane:

Tank Yetkilendirme

Artıları

  • Tam özellikli
  • Özellik seti dikkate alınarak yalın ayak izi (20 dosya)
  • Çok iyi belgeler
  • Basit ve zarif veritabanı tasarımı (sadece 4 DB tablosu)
  • Çoğu özellik isteğe bağlıdır ve kolayca yapılandırılabilir
  • Dil dosyası desteği
  • reCAPTCHA desteklenir
  • CI'nin doğrulama sistemine bağlanır
  • Aktivasyon e-postaları
  • E-posta, kullanıcı adı veya her ikisi ile giriş yapın (yapılandırılabilir)
  • Etkinleştirilmemiş hesapların süresi dolar
  • Basit ama etkili hata yönetimi
  • Karma için phpass kullanır (ve ayrıca DB'de otomatik oturum açma kodlarını da içerir)
  • Güvenlik soruları kullanmaz
  • Kullanıcı ve profil verilerinin ayrılması çok güzel
  • Başarısız giriş denemeleri etrafında çok makul bir güvenlik modeli (botlara ve DoS saldırılarına karşı iyi koruma)

(Minör) Eksileri

  • Kayıp şifre kodları DB'de özetlenmez
  • (Google'a ait) reCAPTCHA hizmetine bağımlı olmak istemeyenler için iyi olan yerel (kötü) bir CAPTCHA içerir, ancak gerçekten yeterince güvenli değildir
  • Çok seyrek çevrimiçi belgeler (kod güzel belgelenmiş ve sezgisel olduğundan küçük sorun burada)

Tank Yetkilendirmesini buradan indirin


Orijinal cevap:

Ben de kendi uyguladım (şu anda yaklaşık% 80'i birkaç haftalık çalışmanın ardından yaptım). Önce diğerlerini denedim; FreakAuth Light, DX Auth, Redux, SimpleLogin, SimpleLoginSecure, pc_user, Fresh Powered ve birkaç tane daha. Hiçbiri eşit, IMO, ya temel özellikleri, doğal olarak güvenli değildi, ya da benim zevkime çok şişirilmiş.

Aslında, onları test ederken (yeni yıl sonra) CodeIgniter için tüm kimlik doğrulama kitaplıkları ayrıntılı bir toplama yaptım. FWIW, sizinle paylaşacağım:

DX Kimlik Doğrulaması

Artıları

  • Çok özellikli
  • Orta ayak izi (25+ dosya), ancak oldukça ince hissetmeyi başarıyor
  • Bazıları biraz kırık İngilizce olmasına rağmen mükemmel dokümantasyon
  • Dil dosyası desteği
  • reCAPTCHA desteklenir
  • CI'nin doğrulama sistemine bağlanır
  • Aktivasyon e-postaları
  • Etkinleştirilmemiş hesapların süresi dolar
  • Tuzlar için grc.com önerir (PRNG için fena değil)
  • Kayıtlı 'akıl' dizelerle yasaklama
  • Basit ama etkili hata yönetimi

Eksileri

  • Kullanıcıların yalnızca kayıp bir şifreyi 'sıfırlamasına' izin verir (yeniden etkinleştirildiğinde yeni bir şifre seçmelerine izin vermek yerine)
  • Homebrew sözde olay modeli - iyi niyet, ancak işareti özlüyor
  • Kullanıcı tablosunda iki şifre alanı, bozuk stil
  • İki ayrı kullanıcı tablosu kullanır (biri 'geçici' kullanıcılar için - belirsiz ve yedekli)
  • Güvenli olmayabilecek md5 karma işlemini kullanır
  • Başarısız giriş denemeleri kullanıcı adına göre değil sadece IP tarafından saklanır - güvensiz!
  • Otomatik oturum açma anahtarı veritabanında karma değildir - şifreleri açık metin olarak saklamak kadar güvenli değildir!
  • Rol sistemi tam bir karışıklıktır: sabit kodlu rol adlarına sahip is_admin işlevi, tam bir karışıklıktır, check_uri_permissions bir karışıklıktır, tüm izinler tablosu kötü bir fikirdir (bir URI sayfaları korumasız hale getirebilir; izinler her zaman tam olarak saklanmalıdır hassas mantığın bulunduğu yer). Oyunbozan!
  • Yerel (zayıf) bir CAPTCHA içerir
  • reCAPTCHA fonksiyon arayüzü dağınık

FreakAuth Işık

Artıları

  • Çok özellikli
  • Çoğunlukla oldukça iyi belgelenmiş kod
  • Kullanıcı ve profil verilerinin ayrılması hoş bir dokunuş
  • CI'nin doğrulama sistemine bağlanır
  • Aktivasyon e-postaları
  • Dil dosyası desteği
  • Aktif olarak geliştirildi

Eksileri

  • Biraz şişmiş hissediyor (50+ dosya)
  • Ve yine de otomatik çerez girişi yok (!)
  • Hem kullanıcı adı hem de e-posta ile girişleri desteklemiyor
  • UTF-8 karakterleriyle ilgili sorunlar var gibi görünüyor
  • Çok fazla otomatik yükleme gerektirir (performansı düşürür)
  • Kötü yönetilen yapılandırma dosyası
  • Görünümlerde çok sayıda program mantığı ve denetleyicilere sabit kodlanmış çıktı ile korkunç View-Controller ayırma. Oyunbozan!
  • Dahili görünümlerde yetersiz HTML kodu
  • Standart altı CAPTCHA içerir
  • Yorumlanan hata ayıklama yankıları her yerde
  • Belirli bir klasör yapısını zorlar
  • Belirli bir Ajax kütüphanesini zorlar (değiştirilebilir, ancak ilk etapta orada olmamalıdır)
  • Giriş denemelerinde maksimum sınır yok - ÇOK güvensiz! Oyunbozan!
  • Hijacks form doğrulaması
  • Güvenli olmayabilecek md5 karma işlemini kullanır

pc_user

Artıları

  • Az yer kaplaması için iyi özellik seti
  • Hafif, şişkinlik yok (3 dosya)
  • Zarif otomatik çerez girişi
  • İsteğe bağlı test uygulamasıyla birlikte gelir (hoş bir dokunuş)

Eksileri

  • Eski CI veritabanı sözdizimini kullanır (daha az güvenli)
  • CI'nin doğrulama sistemine bağlanmaz
  • Tür sezgisel olmayan durum (rol) sistemi (baş aşağı endeksler - pratik değildir)
  • Güvenli olmayabilecek sha1 karma yöntemini kullanır

Taze Güç

Artıları

  • Küçük kaplama alanı (6 dosya)

Eksileri

  • Birçok temel özellik yok. Oyunbozan!
  • Her şey kodlanmış. Oyunbozan!

Redux / Ion Auth

Göre CodeIgniter wiki , Redux durduruldu, ancak İyon Auth çatal güçlü oluyor: https://github.com/benedmunds/CodeIgniter-Ion-Auth

Ion Auth, aşırı derecede ağır veya gelişmiş olmadan iyi özellikli bir kütüphanedir. Çoğu durumda, özellik seti bir projenin gereksinimlerini karşılamaktan daha fazlasını sağlayacaktır.

Artıları

  • CodeIgniter ile hafif ve kolay entegrasyon
  • Doğrudan kütüphaneden e-posta göndermeyi destekler
  • İyi belgelenmiş çevrimiçi ve iyi etkin geliştirici / kullanıcı topluluğu
  • Bir projeye kolayca uygulanabilir

Eksileri

  • Diğerlerinden daha karmaşık DB şeması
  • Belgelerde bazı alanlarda ayrıntılar eksik

SimpleLoginSecure

Artıları

  • Küçük kaplama alanı (4 dosya)
  • Minimalist, kesinlikle şişkinlik yok
  • Karma için phpass kullanır (mükemmel)

Eksileri

  • Sadece giriş yapın, çıkış yapın, oluşturun ve silin
  • Birçok temel özellik yok. Oyunbozan!
  • Bir kütüphane olmaktan çok başlangıç ​​noktası

Beni yanlış anlamayın: Yukarıdaki kütüphanelerden herhangi birine saygısızlık etmek istemiyorum; Geliştiricilerinin başardıkları ve her birinin ne kadar uzağa geldiklerinden çok etkilendim ve kendi kodlarını oluşturmak için bazı kodlarını yeniden kullanmanın üstünde değilim. Söylediğim şey, bazen bu projelerde, odaklanma 'ihtiyaç duyulan ihtiyaçlardan' (sert güvenlik uygulamaları gibi) daha yumuşak 'hoş olanlara' doğru kayıyor ve bunu düzeltmeyi umuyorum .

Bu nedenle: temellere geri dönün.

CodeIgniter için kimlik doğrulaması doğru yapıldı

İşte bir kimlik doğrulama kitaplığından MINIMAL gerekli özellikler listem. Ayrıca kendi kütüphanemin özellik listesinin bir alt kümesi olur;)

  1. İsteğe bağlı test uygulamasıyla küçük alan
  2. Tüm belgeler
  3. Otomatik yükleme gerekmez. Performans için tam zamanında kitaplık yükleme
  4. Dil dosyası desteği; sabit kodlu dizeler yok
  5. reCAPTCHA destekli ancak isteğe bağlı
  6. Önerilen TRUE rastgele tuz üretimi (örn. Random.org veya random.irb.hr kullanarak)
  7. Üçüncü taraf girişlerini destekleyen isteğe bağlı eklentiler (OpenID, Facebook Connect, Google Hesabı vb.)
  8. Kullanıcı adı veya e-posta adresi kullanarak giriş yapın
  9. Kullanıcı ve profil verilerinin ayrılması
  10. Etkinleştirme ve kayıp şifreler için e-postalar
  11. Otomatik çerez giriş özelliği
  12. Karma için yapılandırılabilir phpass (tabii ki tuzlanmış!)
  13. Şifrelerin karması
  14. Otomatik oturum açma kodlarının karması
  15. Kayıp şifre kodlarının karması
  16. CI'nin doğrulama sistemine bağlanır
  17. Güvenlik sorusu YOK!
  18. İsteğe bağlı istemci tarafı (Javascript) doğrulayıcı ile güçlü parola ilkesi sunucu tarafı zorunlu kılındı
  19. Hem sözlük hem de DoS saldırılarına karşı BEST PRACTICES karşı önlemleriyle maksimum sayıda başarısız giriş denemesi zorlandı!
  20. Tüm veritabanı erişimi hazırlanmış (bağlı) ifadelerle yapılır!

Not: Bu son birkaç nokta, web uygulamanız için ihtiyaç duymadığınız süper yüksek güvenlikli overkill değildir. Bir kimlik doğrulama kitaplığı bu güvenlik standartlarını% 100 karşılamıyorsa, KULLANMAYIN!

Bunları yazılımlarından çıkaran sorumsuz kodlayıcıların son yüksek profilli örnekleri: # 17, Başkanlık kampanyası sırasında Sarah Palin'in AOL e-postasının nasıl saldırıya uğradığı; Britney Spears, Barack Obama, Fox News ve diğerlerinin Twitter hesapları hacklendiğinde, # 18 ve # 19 gibi kötü bir kombinasyon suçluydu; Sadece 20 numara Çinli hackerların 70.000'den fazla Kore web sitesinden 9 milyon kişisel bilgiyi 2008'de tek bir otomatik saldırı ile nasıl çalmayı başardıklarını gösteriyor.

Bu saldırılar beyin ameliyatı değildir. Arka kapılarınızı tamamen açık bırakırsanız, önü cıvatalayarak kendinizi yanlış bir güvenlik duygusuna aldatmamalısınız. Ayrıca, CodeIgniter gibi en iyi uygulamalar çerçevesini seçmek için kodlama konusunda yeterince ciddiyseniz, en azından en temel güvenlik önlemlerini doğru bir şekilde yapmayı kendinize borçlusunuz .


<Rant>

Temel olarak, işte nasıl: Auth kütüphanesinin bir dizi özellik, gelişmiş rol yönetimi, PHP4 uyumluluğu, güzel CAPTCHA yazı tipleri, ülke tabloları, eksiksiz yönetici panelleri, ziller ve ıslıklar sunması umurumda değil - eğer kütüphane gerçekten sitem en iyi uygulamaları izlemeyerek daha az güvenli . Bu bir kimlik doğrulama paketidir; bir şeyi doğru yapması gerekir: Kimlik doğrulama. Bunu yapmak için başarısız olursa o , aslında yarardan çok zarar yapıyor.

</ Rant>

/ Jens Roland


1
Hala üzerinde, kötü bir mimari sorunu koştu ve hızlı bir geçici çözüm (bu sadece iyi çalışır ama sıkı birleştirme muzdarip olurdu) birlikte kesmek arasında ya da arkanıza yaslanın ve doğru yapmak için nasıl düşünmek arasında seçim yapmak zorunda kaldı . İkinci seçeneği seçtim ve hala kırmadım: D
Jens Roland

2
Jens, (mükemmel) yazınıza
Richard M

8
Bu gönderiyi güncelleyebilir ve Ion-Auth (dx-auth'dan türetilmiş) ile karşılaştırabilir misiniz? İyon auth, bu noktada tank-auth'tan daha güncel ve aktif görünüyor. Güvenlik açığı Tank-auth kadar iyi olup olmadığını bilmek istiyorum, çünkü yararlı olabilecek bazı ek özellikleri var.
Vijay

1
Tüm bu kütüphaneler mysql kullanın .. ancak bir noSql veritabanı olan MongoDb kullanın. MoongoDB ile çalışan bir kütüphane var mı? Yukarıdaki kütüphanelerden birini MySql yerine MongoDB'ye eklemek için dönüştürmeyi denedim ama çok karmaşıklaşıyor ve bunu zaten yapan bir kütüphane bilmek istiyorum
Ninja

2
@Lykos: Elbette - Kullanıcı verileri, UserID, UserName, E-posta, PasswordHash, LastLoginTime, vb. Gibi kimlik doğrulamasına özgü veriler olacaktır. Profil verileri ayrı bir DB tablosunda depolanmalı ve belirli bir uygulamaya bağlı olarak her şey olabilir. Bu, doğum günü, cinsiyet, memleket, itibar puanı vb. Şeyleri içerebilir. Bu şekilde, uygulama geliştiricileri aniden kırılma konusunda endişelenmenize gerek kalmadan ProfileData tablosunu istedikleri şekilde değiştirebilirler.
Jens Roland

58

Jens Roland'ın "kapsamlı listelemesinin" kullanıcı rolleri içermediğini unutmayın. Farklı kullanıcı rolleri (admin / user veya admin / editor / user gibi) atamakla ilgileniyorsanız, bu kitaplıklar aşağıdakilere izin verir:

  • Ion_Auth (Redux'un yeniden yazılması)
  • Redux
  • Arka Uç Pro

Tank_Auth (yukarıda Jens listesinde 1 numara) kullanıcı rolüne sahip değil. Bunun kimlik doğrulamanın bir parçası olmadığını, ancak

  • kimlik doğrulama ve rol yönetimi sayfa yüklendiğinde ele alınır
  • Her ikisi de güvenlik içerir
  • Aynı tablo / model her ikisi için de kullanılabilir.
  • Her ikisi de denetleyici yapıcısına (hatta otomatik yüklemeye) yüklenecek şekilde ayarlanabilir

İhtiyacınız varsa, her ikisini de işleyecek bir kütüphaneye sahip olmak çok mantıklıdır. Bu nedenle Tank_Auth'dan Ion_Auth'a geçiyorum.


Ah, bakın, bunu bilmek gerçekten iyi - bir kütüphanede tüm yönlere sahip olmak güzel, her şeyi basit ve işlevsel tutar. Sadece bu nedenle Ion_Auth'a bakmak zorunda kalacaksınız! Teşekkürler Burton!
Edd Twilbeck

4
Tabii ki bu iyi bir nokta ve rol yönetimi (genel olarak yetkilendirme) kimlik doğrulama sistemine yakından bağlı birçok sitenin merkezi bir parçası. Yine de, her gün gelişmiş yerleşik rol yönetimine sahip savunmasız bir kimlik doğrulama sistemi üzerinde basit veya var olmayan rol yönetimine sahip güvenli bir kimlik doğrulama sistemi seçeceğim.
Jens Roland

Ion_Auth, CI 2.1 ve DataMapper ORM ile iyi çalışıyor
user482594

37

Ion_auth! Çok umut verici ve az yer kaplıyor! Severim..

http://github.com/benedmunds/CodeIgniter-Ion-Auth


Ion Auth benim için de iyi çalışıyor, ihtiyacım olan her şeye ve sahip olmadığım hiçbir şeye sahip değil (gizli sorular ve beğeniler gibi).
SolidSmile

1
Ion Auth kullanım, özellikler ve hafiflik açısından şu anki lider gibi görünüyor.
pbreitenbach

5
Hem Tank Auth hem de Ion Auth'u denedim ve Tank Auth kodunun İyon Auth'a göre çok daha temiz, daha kolay anlaşılır ve genişletilmesi daha kolay olduğunu söyleyebilirim. Öte yandan Ion Auth 'rolleri' destekler.
Jonathan

30

Redux Auth'un geliştiricisiyim ve bahsettiğiniz sorunların bazıları sürüm 2 beta'da düzeltildi. Bunu resmi bir web sitesinden de örnek bir uygulama ile indirebilirsiniz.

  • Otomatik yükleme gerektirir (performansı düşürür)
  • Doğası gereği güvenli olmayan 'güvenlik soruları' kavramını kullanır. Oyunbozan!

Güvenlik soruları artık kullanılmıyor ve daha basit bir unutulmuş şifre sistemi devreye sokuldu.

  • Geri dönüş türleri, doğru, yanlış, hata ve başarı kodlarının bir parçası

Bu, sürüm 2'de giderildi ve boole değerleri döndürür. Hodgepodge'den senin kadar nefret ettim.

  • CI'nin doğrulama sistemine bağlanmaz

Örnek uygulama, CI'nin doğrulama sistemini kullanır.

  • Kullanıcının 'kayıp şifre' kodunu tekrar göndermesine izin vermez

Devam eden çalışma

Ayrıca, e-posta görünümleri gibi diğer bazı özellikleri de uyguladım, bu size e-postalarınızda CodeIgniter yardımcılarını kullanabilme seçeneği sunar.

Hâlâ devam etmekte olan bir çalışma olduğundan, başka önerileriniz varsa lütfen bunları gelmeye devam edin.

-Patlamış mısır

Ps: Redux'u önerdiğiniz için teşekkürler.


1
Merhaba merhaba Mathew - ve yazıma cevap vermek için zaman ayırdığınız için teşekkürler. Beta çok ilginç geliyor - farkettiğiniz gibi, Redux zaten toparlamamda her şeyi düzeltmeye en yakın geldi, bu yüzden hemen bakacağım.
Jens Roland

Sadece CI Forum iş parçacığına ve yol haritasına hızlı bir bakış attı. İyi görünmek - 'dinamik' tuzlarla ilgili olarak, bitiştirmeyi tavsiye ederim (kayıt tarihi). (yapılandırma dosyası karma tuşu). (kod veya şifre) çalınan bir veritabanındaki gökkuşağı tablolarını ve kaba kuvveti önlemek için
Jens Roland

Ayrıca, otantik en iyi uygulamalar ( stackoverflow.com/questions/549/… ) ve botnet azaltma ( stackoverflow.com/questions/479233/… ) hakkında bazı düşüncelerim var
Jens Roland

14

Flexi Auth ile tanıştım ( http://haseydesign.com/flexi-auth/ ). Çok umut verici görünüyor ve kullanmaya başladım. Wonderfful özelliklerine sahiptir. CI ile tam olarak bütünleşir ve biri tüm işlevlerle çok ağır yüklenen ve diğeri sadece doğrulamaları içeren iki farklı kütüphane dosyası ile birlikte gelir.

En iyilerinden biri, yeni kaydedilen üyenin e-postalarındaki bağlantıyı tıklayıp etkinleştirene kadar sitede belirli bir süre için geçici erişim elde etmesidir.


Bu bağlantı için teşekkürler. Ayrıca başka bir iyi özelliği vardır Flexi Cart haseydesign.com/flexi-cart .
Vir

13

Belki Redux'un ihtiyaçlarınızı karşıladığını görürsünüz . Bu aşırıya kaçmaz ve sadece çoğumuzun gerektirdiği çıplak özelliklerle doludur. Geliştirici ve katkıda bulunanlar, hangi kodun katkıda bulunduğu konusunda çok katıydı.

Bu resmi sayfa


1
geçerli sürüm Code Igniter'ın en son sürümünü destekliyor mu? Görünüşe göre çok uzun süredir güncelleme yapılmamış. Aksi takdirde beğendim.
GavinR

Bir üretim tesisindeki en son CI sürümüyle Redux kullanıyorum. Çok hafif, tıpkı CI gibi ve çok özelleştirilebilir.
GloryFish

1
Redux daha uzun süre korunur, bu tartışmaya bakın. codeigniter.com/forums/viewthread/145342
The Pixel Developer

Ion Auth, Redux Auth 2'ye dayanıyor ve kullanacağım. PyroCMS de kullanıyor. github.com/benedmunds/CodeIgniter-Ion-Auth
Robert Audi

8

Ion_Auth, tank_auth'u temel olarak iki nedenden ötürü kullanır: kullanıcı rolleri ve belgeler, bu ikisi tank_auth'ta eksik.



4

BackendPro'ya da göz atın

Sonuçta muhtemelen özel bir şey yazacaksınız, ancak DX Auth, Freak Auth, BackendPro, vb.

Paketlenmiş uygulamalarla ilgili deneyimlerim, belirli yapılara özgü oldukları ve bunları kesmek zorunda kalmadan kendi uygulamalarıma entegre etmede sorun yaşadım, o zaman ön paketin bir güncellemesi varsa, bunları taşımam gerekiyor.

SmartI ve ADOdb'yi CI kodumda da kullanıyorum, bu yüzden ne olursa olsun her zaman büyük kod değişiklikleri yapıyorum.


3

Tank Kimlik Doğrulaması iyi görünüyor, ancak dokümantasyon nasıl kurulacağına dair tek sayfalık bir açıklama ve her bir PHP dosyasının hızlı bir şekilde gözden geçirilmesi. En azından bir sürü Google'dan sonra bulduğum bu kadar. Belki de Tank Auth'un iyi belgelendiğini söylediklerinde insanların yukarıda ne anlama geldiği, kodun iyi yorumlanmış olduğudur. Bu iyi bir şey, ancak dokümantasyondan farklı. Tank Auth'un özelliklerini mevcut kodunuzla nasıl entegre edeceğiniz konusunda bazı belgelere sahip olmak güzel olurdu.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.