Ben orada bkz birkaç . Hangileri korunur ve kullanımı kolaydır? Artıları ve eksileri nelerdir?
Ben orada bkz birkaç . Hangileri korunur ve kullanımı kolaydır? Artıları ve eksileri nelerdir?
Yanıtlar:
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:
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:
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
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
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
Artıları
- Küçük kaplama alanı (6 dosya)
Eksileri
- Birçok temel özellik yok. Oyunbozan!
- Her şey kodlanmış. Oyunbozan!
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
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.
İşte bir kimlik doğrulama kitaplığından MINIMAL gerekli özellikler listem. Ayrıca kendi kütüphanemin özellik listesinin bir alt kümesi olur;)
- İsteğe bağlı test uygulamasıyla küçük alan
- Tüm belgeler
- Otomatik yükleme gerekmez. Performans için tam zamanında kitaplık yükleme
- Dil dosyası desteği; sabit kodlu dizeler yok
- reCAPTCHA destekli ancak isteğe bağlı
- Önerilen TRUE rastgele tuz üretimi (örn. Random.org veya random.irb.hr kullanarak)
- Üçüncü taraf girişlerini destekleyen isteğe bağlı eklentiler (OpenID, Facebook Connect, Google Hesabı vb.)
- Kullanıcı adı veya e-posta adresi kullanarak giriş yapın
- Kullanıcı ve profil verilerinin ayrılması
- Etkinleştirme ve kayıp şifreler için e-postalar
- Otomatik çerez giriş özelliği
- Karma için yapılandırılabilir phpass (tabii ki tuzlanmış!)
- Şifrelerin karması
- Otomatik oturum açma kodlarının karması
- Kayıp şifre kodlarının karması
- CI'nin doğrulama sistemine bağlanır
- Güvenlik sorusu YOK!
- İsteğe bağlı istemci tarafı (Javascript) doğrulayıcı ile güçlü parola ilkesi sunucu tarafı zorunlu kılındı
- 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ı!
- 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
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:
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
İ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.
Ion_auth! Çok umut verici ve az yer kaplıyor! Severim..
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.
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.
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
DX Auth'un özelleştirilmiş bir sürümünü kullanıyorum . Ben kullanımı basit, değiştirmek son derece kolay buldum ve Kod Igniter's çok benzer bir kullanıcı kılavuzu (harika örneklerle) vardır.
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.
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.
Ion_Auth deniyorum ve takdir btw ...
SimpleLoginSecure Kimlik doğrulamayı basit ve güvenli hale getirir .