Vedo che ce ne sono alcuni . Quali sono mantenuti e facili da usare? Quali sono i loro pro e contro?
Vedo che ce ne sono alcuni . Quali sono mantenuti e facili da usare? Quali sono i loro pro e contro?
Risposte:
Si scopre che lo sviluppatore russo Ilya Konyukhov ha raccolto il guanto dopo averlo letto e ha creato una nuova libreria di autenticazione per CI basata su DX Auth, seguendo le raccomandazioni e i requisiti di seguito.
E il conseguente Tank Auth sembra la risposta alla domanda del PO. Ho intenzione di uscire su un arto qui e chiamare Tank Auth la migliore libreria di autenticazione per CodeIgniter disponibile oggi. È una libreria solida come una roccia che ha tutte le funzionalità di cui hai bisogno e nessuna delle gonfie che non hai:
Professionisti
- Pieno di funzionalità
- Ingombro ridotto (20 file) considerando il set di funzionalità
- Ottima documentazione
- Progettazione di database semplice ed elegante (solo 4 tabelle DB)
- La maggior parte delle funzionalità sono opzionali e facilmente configurabili
- Supporto per file di lingua
- reCAPTCHA supportato
- Si collega al sistema di validazione di CI
- Email di attivazione
- Accedi con e-mail, nome utente o entrambi (configurabile)
- Gli account non attivati scadono automaticamente
- Gestione degli errori semplice ma efficace
- Utilizza phpass per l'hashing (e esegue anche l'hashing dei codici di accesso automatico nel DB)
- Non usa domande di sicurezza
- La separazione dei dati dell'utente e del profilo è molto piacevole
- Modello di sicurezza molto ragionevole attorno ai tentativi di accesso non riusciti (buona protezione contro bot e attacchi DoS)
(Minori) Contro
- I codici password persi non vengono sottoposti a hash nel DB
- Include un CAPTCHA nativo (scarso), che è utile per coloro che non vogliono dipendere dal servizio reCAPTCHA (di proprietà di Google), ma in realtà non è abbastanza sicuro
- Documentazione online molto scarsa (problema minore qui, poiché il codice è ben documentato e intuitivo)
Risposta originale:
Ho implementato anche il mio (attualmente circa l'80% ha fatto dopo alcune settimane di lavoro). Prima ho provato tutti gli altri; FreakAuth Light, DX Auth, Redux, SimpleLogin, SimpleLoginSecure, pc_user, Fresh Powered e pochi altri. Nessuno di loro era all'altezza, IMO, o mancavano delle funzionalità di base, intrinsecamente insicure o troppo gonfie per i miei gusti.
In realtà, ho fatto un riepilogo dettagliato di tutte le librerie di autenticazione per CodeIgniter mentre le stavo testando (subito dopo il capodanno). FWIW, lo condividerò con te:
Professionisti
- Molto ricco di funzionalità
- Ingombro medio (oltre 25 file), ma riesce a sembrare abbastanza magro
- Ottima documentazione, anche se alcuni sono in inglese leggermente rotto
- Supporto per file di lingua
- reCAPTCHA supportato
- Si collega al sistema di validazione di CI
- Email di attivazione
- Gli account non attivati scadono automaticamente
- Suggerisce grc.com per i sali (non male per un PRNG)
- Esclusione con stringhe di "motivi" memorizzate
- Gestione degli errori semplice ma efficace
Contro
- Consente solo agli utenti di "reimpostare" una password persa (anziché lasciarli scegliere una nuova al momento della riattivazione)
- Modello di pseudo-evento homebrew - buona intenzione, ma manca il segno
- Due campi password nella tabella utente, stile errato
- Utilizza due tabelle utente separate (una per gli utenti "temporanei": ambigua e ridondante)
- Utilizza hashing md5 potenzialmente non sicuro
- Tentativi di accesso non riusciti memorizzati solo dall'IP, non dal nome utente - non sicuro!
- Chiave di accesso automatico non hash nel database - praticamente non sicura come la memorizzazione di password in chiaro!
- Il sistema di ruolo è un disastro completo: funzione is_admin con nomi di ruoli codificati, is_role un disastro completo, check_uri_permissions è un disastro, l'intera tabella delle autorizzazioni è una cattiva idea (un URI può cambiare e rendere le pagine non protette; le autorizzazioni devono sempre essere archiviate esattamente dove si trova la logica sensibile). Dealbreaker!
- Include un CAPTCHA nativo (scarso)
- L'interfaccia della funzione reCAPTCHA è disordinata
Professionisti
- Molto ricco di funzionalità
- Principalmente codice abbastanza ben documentato
- La separazione dei dati dell'utente e del profilo è un bel tocco
- Si collega al sistema di validazione di CI
- Email di attivazione
- Supporto per file di lingua
- Sviluppato attivamente
Contro
- Sembra un po 'gonfio (oltre 50 file)
- Eppure manca l'accesso automatico ai cookie (!)
- Non supporta gli accessi con nome utente ed e-mail
- Sembra avere problemi con i caratteri UTF-8
- Richiede molto caricamento automatico (impedendo le prestazioni)
- File di configurazione mal gestito
- Terribile separazione del View-Controller, con molta logica di programma nelle viste e output hardcoded nei controller. Dealbreaker!
- Codice HTML scadente nelle viste incluse
- Include CAPTCHA scadente
- Il debug commentato echeggia ovunque
- Forza una struttura di cartelle specifica
- Forza una libreria Ajax specifica (può essere cambiata, ma non dovrebbe essere lì in primo luogo)
- Nessun limite massimo per i tentativi di accesso - MOLTO pericoloso! Dealbreaker!
- Convalida del modulo Hijacks
- Utilizza hashing md5 potenzialmente non sicuro
Professionisti
- Buone funzionalità per il suo ingombro ridotto
- Leggero, non gonfio (3 file)
- Elegante accesso automatico ai cookie
- Viene fornito con implementazione di test opzionale (bel tocco)
Contro
- Utilizza la vecchia sintassi del database CI (meno sicura)
- Non si aggancia al sistema di validazione di CI
- Sistema di stato (ruolo) non intuitivo (indici sottosopra - impraticabile)
- Utilizza l'hash sha1 potenzialmente non sicuro
Professionisti
- Ingombro ridotto (6 file)
Contro
- Manca molte funzionalità essenziali. Dealbreaker!
- Tutto è hard-coded. Dealbreaker!
Secondo la wiki di CodeIgniter , Redux è stato sospeso, ma il fork di Ion Auth sta andando forte: https://github.com/benedmunds/CodeIgniter-Ion-Auth
Ion Auth è una libreria ben descritta senza essere eccessivamente pesante o poco avanzata. Nella maggior parte dei casi il suo set di funzionalità soddisferà più i requisiti di un progetto.
Professionisti
- Leggero e semplice da integrare con CodeIgniter
- Supporta l'invio di e-mail direttamente dalla libreria
- Online ben documentato e buona comunità di sviluppatori / utenti attivi
- Semplice da implementare in un progetto
Contro
- Schema DB più complesso di alcuni altri
- La documentazione manca di dettagli in alcune aree
Professionisti
- Minimo footprint (4 file)
- Minimalista, assolutamente senza gonfia
- Utilizza phpass per l'hashing (eccellente)
Contro
- Effettua l'accesso, il logout, la creazione e l'eliminazione
- Manca molte funzionalità essenziali. Dealbreaker!
- Più di un punto di partenza che di una biblioteca
Non fraintendetemi: non intendo mancare di rispetto a nessuna delle librerie di cui sopra; Sono molto impressionato da ciò che i loro sviluppatori hanno realizzato e da quanto lontano sono arrivati, e non sto esagerando nel riutilizzare parte del loro codice per creare il mio. Quello che sto dicendo è che, a volte in questi progetti, l'attenzione si sposta dagli essenziali "bisogni" (come le pratiche di sicurezza difficili) a quelli più "delicati", ed è quello che spero di rimediare .
Pertanto: ritorno alle origini.
Ecco il mio elenco minimo di funzionalità richieste da una libreria di autenticazione. Capita anche di essere un sottoinsieme dell'elenco delle funzionalità della mia libreria;)
- Minimo ingombro con implementazione del test opzionale
- Documentazione completa
- Non è necessario il caricamento automatico. Caricamento just-in-time delle librerie per le prestazioni
- Supporto per file di lingua; nessuna stringa codificata
- reCAPTCHA supportato ma facoltativo
- Generazione di sale casuale TRUE consigliata (ad es. Utilizzando random.org o random.irb.hr)
- Componenti aggiuntivi opzionali per supportare l'accesso di terze parti (OpenID, Facebook Connect, account Google, ecc.)
- Accedi utilizzando il nome utente o l'e-mail
- Separazione dei dati dell'utente e del profilo
- Email per attivazione e password perse
- Funzione di accesso automatico ai cookie
- Phpass configurabile per l'hashing (ovviamente correttamente salato!)
- Hashing di password
- Hashing dei codici di accesso automatico
- Hashing di codici password persi
- Si collega al sistema di validazione di CI
- NESSUNA domanda di sicurezza!
- Criteri di password avanzati applicati lato server, con validatore lato client (Javascript) opzionale
- Imponi il numero massimo di tentativi di accesso falliti con le contromisure MIGLIORI PRATICHE contro gli attacchi del dizionario e DoS!
- Tutti gli accessi al database vengono effettuati tramite istruzioni preparate (associate)!
Nota: questi ultimi punti non sono un sovraccarico di altissima sicurezza che non è necessario per la tua applicazione web. Se una libreria di autenticazione non soddisfa questi standard di sicurezza al 100%, NON UTILIZZARLA!
Recenti esempi di alto profilo di programmatori irresponsabili che li hanno esclusi dal loro software: # 17 è il modo in cui l'e-mail AOL di Sarah Palin è stata hackerata durante la campagna presidenziale; una brutta combinazione di n. 18 e n. 19 sono stati i colpevoli di recente quando gli account Twitter di Britney Spears, Barack Obama, Fox News e altri sono stati hackerati; e il solo numero 20 è il modo in cui gli hacker cinesi sono riusciti a rubare 9 milioni di elementi di informazioni personali da oltre 70.000 siti web coreani in un attacco automatizzato nel 2008.
Questi attacchi non sono un intervento chirurgico al cervello. Se lasci le porte posteriori spalancate, non dovresti illuderti in un falso senso di sicurezza sbattendo la parte anteriore. Inoltre, se sei abbastanza serio sulla codifica per scegliere un framework di best practice come CodeIgniter, devi a te stesso almeno fare le giuste misure di sicurezza di base .
<Rant>
Fondamentalmente, ecco com'è: non mi interessa se una libreria di autenticazione offre un sacco di funzionalità, gestione avanzata dei ruoli, compatibilità PHP4, caratteri piuttosto CAPTCHA, tabelle di paesi, pannelli amministrativi completi, campane e fischietti - se la libreria effettivamente fa il mio sito è meno sicuro non seguendo le migliori pratiche. È un pacchetto di autenticazione ; deve fare UNA cosa giusta: l'autenticazione. Se non riesce a farlo , che , in realtà è fare più male che bene.
</ Rant>
/ Jens Roland
La "lista completa" di Jens Roland non include i ruoli utente. Se sei interessato ad assegnare ruoli utente diversi (come admin / user o admin / editor / user), queste librerie lo consentono:
Tank_Auth (n. 1 sopra nell'elenco di Jens) non ha ruoli utente. Mi rendo conto che non fa esattamente parte dell'autenticazione, ma da allora
Ha molto senso avere una libreria per gestire entrambi, se ne hai bisogno. Sto passando a Ion_Auth da Tank_Auth per questo.
Ion_auth! Sembra molto promettente e di dimensioni ridotte! Mi piace..
Sono lo sviluppatore di Redux Auth e alcuni dei problemi menzionati sono stati risolti nella versione 2 beta. Puoi scaricarlo dal sito Web ufficiale con un'applicazione di esempio.
- Richiede il caricamento automatico (impedendo le prestazioni)
- Utilizza il concetto intrinsecamente pericoloso di "domande sulla sicurezza". Dealbreaker!
Le domande di sicurezza non vengono ora utilizzate ed è stato creato un sistema di password dimenticata più semplice.
- I tipi restituiti sono un po 'un miscuglio di codici true, false, error e success
Questo problema è stato risolto nella versione 2 e restituisce valori booleani. Ho odiato l'hodgepodge tanto quanto te.
- Non si aggancia al sistema di validazione di CI
L'applicazione di esempio utilizza il sistema di convalida dell'elemento della configurazione.
- Non consente a un utente di inviare nuovamente un codice "password dimenticata"
Lavori in corso
Ho anche implementato alcune altre funzionalità come le visualizzazioni e-mail, questo ti dà la possibilità di poter utilizzare gli helper CodeIgniter nelle tue e-mail.
È ancora in fase di elaborazione, quindi se hai altri suggerimenti ti preghiamo di farli arrivare.
-Popcorn
Ps: Grazie per aver consigliato Redux.
Mi sono imbattuto in Flexi Auth ( http://haseydesign.com/flexi-auth/ ). Sembra molto promettente e ho iniziato a usarlo. Ha le caratteristiche di wonderfful. Si integra completamente con CI e viene fornito con due diversi file di libreria, in cui uno è molto pesante con tutte le funzioni e l'altro contiene solo le convalide.
Uno dei migliori è che il nuovo membro registrato abbia accesso temporaneo per un determinato periodo di tempo sul sito, fino a quando non fa clic sul collegamento dalla sua e-mail e si attiva.
Forse troverai Redux adatto alle tue esigenze. Non è eccessivo e viene fornito solo con funzionalità nude che la maggior parte di noi richiederebbe. Lo sviluppatore e i collaboratori sono stati molto severi su quale codice è stato fornito.
Questa è la pagina ufficiale
Uso una versione personalizzata di DX Auth . L'ho trovato semplice da usare, estremamente facile da modificare e ha una guida per l'utente (con ottimi esempi) che è molto simile a Code Igniter's.
Dai un'occhiata anche a BackendPro
Alla fine probabilmente finirai per scrivere qualcosa di personalizzato, ma non c'è niente di sbagliato nel prendere in prestito concetti da DX Auth, Freak Auth, BackendPro, ecc.
La mia esperienza con le app in pacchetto è che sono specifiche per determinate strutture e ho avuto problemi a integrarle nelle mie applicazioni senza richiedere hack, quindi se il pre-pacchetto ha un aggiornamento, devo migrarle.
Uso anche Smarty e ADOdb nel mio codice CI, quindi, indipendentemente da ciò che farei sempre apportando importanti modifiche al codice.
Tank Auth ha un bell'aspetto ma la documentazione è solo una spiegazione di una pagina su come installare, oltre a una rapida analisi di ogni file PHP. Almeno questo è tutto ciò che ho trovato dopo un sacco di ricerche su Google. Forse ciò che la gente intende sopra quando affermano che Tank Auth è ben documentato è che il codice è ben commentato. Questa è una buona cosa, ma diversa dalla documentazione. Sarebbe stato bello avere della documentazione su come integrare le funzionalità di Tank Auth con il tuo codice esistente.
Sto provando Ion_Auth e lo apprezzo, tra ...
SimpleLoginSecure Rende l'autenticazione semplice e sicura.