Eu vejo que existem alguns . Quais são mantidos e fáceis de usar? Quais são os seus prós e contras?
Eu vejo que existem alguns . Quais são mantidos e fáceis de usar? Quais são os seus prós e contras?
Respostas:
Acontece que o desenvolvedor russo Ilya Konyukhov pegou a luva depois de ler isso e criou uma nova biblioteca de autenticação para o CI baseada no DX Auth, seguindo as recomendações e os requisitos abaixo.
E o Tank Auth resultante parece a resposta para a pergunta do OP. Vou falar sobre isso aqui e chamar o Tank Auth a melhor biblioteca de autenticação para o CodeIgniter disponível hoje. É uma biblioteca sólida que possui todos os recursos de que você precisa e nenhum dos inchaços que você não precisa:
Prós
- Recursos completos
- Pegada enxuta (20 arquivos) considerando o conjunto de recursos
- Documentação muito boa
- Design de banco de dados simples e elegante (apenas 4 tabelas de banco de dados)
- A maioria dos recursos é opcional e facilmente configurável
- Suporte a arquivos de idiomas
- reCAPTCHA suportado
- Ganchos no sistema de validação do IC
- E-mails de ativação
- Entre com email, nome de usuário ou ambos (configurável)
- Contas desativadas expiram automaticamente
- Manipulação de erro simples, mas eficaz
- Usa phpass para hash (e também hashes códigos de registro automático no banco de dados)
- Não usa perguntas de segurança
- A separação dos dados do usuário e do perfil é muito boa
- Modelo de segurança bastante razoável em torno de tentativas de login com falha (boa proteção contra bots e ataques DoS)
Contras (menores)
- Os códigos de senha perdidos não são divididos em hash no banco de dados
- Inclui um CAPTCHA nativo (ruim), que é bom para quem não quer depender do serviço reCAPTCHA (de propriedade do Google), mas na verdade não é seguro o suficiente
- Documentação on-line muito escassa (questão menor aqui, pois o código é bem documentado e intuitivo)
Faça o download do Tank Auth aqui
Resposta original:
Eu também implementei (atualmente cerca de 80% é feito após algumas semanas de trabalho). Eu tentei todos os outros primeiro; FreakAuth Light, DX Auth, Redux, SimpleLogin, SimpleLoginSecure, pc_user, Fresh Powered e muito mais. Nenhum deles estava em pé de igualdade, IMO, ou estavam carecendo de recursos básicos, inerentemente inseguros ou inchados demais para o meu gosto.
Na verdade, fiz um resumo detalhado de todas as bibliotecas de autenticação do CodeIgniter quando as estava testando (logo após o Ano Novo). FWIW, vou compartilhar com você:
Prós
- Muito completo
- Tamanho médio (25 ou mais arquivos), mas consegue se sentir bem magro
- Excelente documentação, embora alguns estejam em inglês ligeiramente quebrado
- Suporte a arquivos de idiomas
- reCAPTCHA suportado
- Ganchos no sistema de validação do IC
- E-mails de ativação
- Contas desativadas expiram automaticamente
- Sugere grc.com para sais (nada mau para um PRNG)
- Banindo com strings 'reason' armazenadas
- Manipulação de erro simples, mas eficaz
Contras
- Permite apenas que os usuários redefinam uma senha perdida (em vez de permitir que eles escolham uma nova após a reativação)
- Modelo de pseudo-evento homebrew - boa intenção, mas erra o alvo
- Dois campos de senha na tabela de usuários, estilo incorreto
- Usa duas tabelas de usuário separadas (uma para usuários 'temp' - ambígua e redundante)
- Usa hash md5 potencialmente inseguro
- Tentativas de login com falha armazenadas apenas por IP, não por nome de usuário - inseguro!
- A chave de registro automático não é dividida em hash no banco de dados - praticamente tão insegura quanto armazenar senhas em texto não criptografado!
- O sistema de função é uma bagunça completa: função is_admin com nomes de função codificados, is_role uma bagunça completa, check_uri_permissions é uma bagunça, toda a tabela de permissões é uma má ideia (um URI pode alterar e tornar as páginas desprotegidas; as permissões devem sempre ser armazenadas exatamente onde está a lógica sensível). Empecilho!
- Inclui um CAPTCHA nativo (ruim)
- A interface da função reCAPTCHA está confusa
Prós
- Muito completo
- Código muito bem documentado
- A separação dos dados do usuário e do perfil é um toque agradável
- Ganchos no sistema de validação do IC
- E-mails de ativação
- Suporte a arquivos de idiomas
- Desenvolvido ativamente
Contras
- Parece um pouco inchado (mais de 50 arquivos)
- E ainda falta o login automático de cookies (!)
- Não suporta logins com nome de usuário e email
- Parece ter problemas com caracteres UTF-8
- Requer muito carregamento automático (impedindo o desempenho)
- Arquivo de configuração mal gerenciado
- Terrível separação entre visualizador e controlador, com muita lógica de programa nas visualizações e saída codificada nos controladores. Empecilho!
- Código HTML incorreto nas visualizações incluídas
- Inclui CAPTCHA abaixo do padrão
- A depuração comentada ecoa em todos os lugares
- Força uma estrutura de pastas específica
- Força uma biblioteca Ajax específica (pode ser alternada, mas não deveria estar lá em primeiro lugar)
- Não há limite máximo para tentativas de login - MUITO inseguro! Empecilho!
- Validação de formulário de invasões
- Usa hash md5 potencialmente inseguro
Prós
- Bom conjunto de recursos por sua pequena área ocupada
- Leve, sem inchaço (3 arquivos)
- Login automático elegante de cookies
- Vem com implementação opcional de teste (toque agradável)
Contras
- Usa a sintaxe antiga do banco de dados do IC (menos seguro)
- Não se conecta ao sistema de validação do IC
- Sistema de status (função) não intuitivo (índices de cabeça para baixo - impraticável)
- Usa hash sha1 potencialmente inseguro
Prós
- Tamanho pequeno (6 arquivos)
Contras
- Falta muitos recursos essenciais. Empecilho!
- Tudo é codificado. Empecilho!
De acordo com o wiki do CodeIgniter , o Redux foi descontinuado, mas o fork do Ion Auth está forte: https://github.com/benedmunds/CodeIgniter-Ion-Auth
O Ion Auth é uma biblioteca com muitos recursos, sem ser excessivamente pesada ou avançada. Na maioria dos casos, seu conjunto de recursos atenderá mais do que os requisitos de um projeto.
Prós
- Leve e simples de integrar com o CodeIgniter
- Suporta o envio de e-mails diretamente da biblioteca
- Bem documentado online e boa comunidade de desenvolvedores / usuários ativos
- Simples de implementar em um projeto
Contras
- Esquema de banco de dados mais complexo do que alguns outros
- A documentação não possui detalhes em algumas áreas
Prós
- Pegada minúscula (4 arquivos)
- Minimalista, absolutamente nenhum inchaço
- Usa phpass para hash (excelente)
Contras
- Somente faça login, logout, crie e exclua
- Falta muitos recursos essenciais. Empecilho!
- Mais um ponto de partida do que uma biblioteca
Não me interpretem mal: não pretendo desrespeitar nenhuma das bibliotecas acima; Estou muito impressionado com o que seus desenvolvedores alcançaram e com o quão longe cada um deles chegou, e não estou reutilizando parte de seu código para criar o meu. O que estou dizendo é que, algumas vezes, nesses projetos, o foco muda das 'necessidades essenciais' (como práticas difíceis de segurança) para as 'coisas agradáveis' mais suaves, e é isso que espero remediar .
Portanto: de volta ao básico.
Aqui está minha lista mínima de recursos obrigatórios de uma biblioteca de autenticação. Também é um subconjunto da lista de recursos da minha própria biblioteca;)
- Área reduzida com implementação de teste opcional
- Documentação completa
- Não é necessário carregamento automático. Carregamento just-in-time de bibliotecas para desempenho
- Suporte a arquivos de idiomas; sem seqüências codificadas
- reCAPTCHA suportado, mas opcional
- TRUE geração de sal aleatória VERDADEIRO recomendada (por exemplo, usando random.org ou random.irb.hr)
- Complementos opcionais para dar suporte ao login de terceiros (OpenID, Facebook Connect, Conta do Google etc.)
- Faça login usando nome de usuário ou email
- Separação de dados de usuário e perfil
- E-mails para ativação e senhas perdidas
- Recurso de login automático de cookies
- Phpass configurável para hash (corretamente salgado, é claro!)
- Hashing de senhas
- Hashing de códigos de registro automático
- Hashing de códigos de senha perdidos
- Ganchos no sistema de validação do IC
- SEM perguntas de segurança!
- Política de senha forte imposta do lado do servidor, com validador opcional do lado do cliente (Javascript)
- Número máximo imposto de tentativas de logon com falha com as contramedidas do BEST PRACTICES contra ataques de dicionário e DoS!
- Todo o acesso ao banco de dados é feito através de instruções preparadas (encadernadas)!
Nota: esses últimos pontos não são um exagero de segurança super alta que você não precisa no seu aplicativo Web. Se uma biblioteca de autenticação não atender 100% a esses padrões de segurança, NÃO USE!
Exemplos recentes de alto perfil de codificadores irresponsáveis que os deixaram de fora de seu software: # 17 é como o email da AOL de Sarah Palin foi invadido durante a campanha presidencial; uma desagradável combinação de # 18 e # 19 foi a culpada recentemente quando as contas de Britney Spears, Barack Obama, Fox News e outras no Twitter foram hackeadas; e o número 20 é o modo como hackers chineses conseguiram roubar 9 milhões de itens de informações pessoais de mais de 70.000 sites coreanos em um hack automático em 2008.
Esses ataques não são cirurgia cerebral. Se você deixar as portas traseiras abertas, não se iluda com uma falsa sensação de segurança, trancando a frente. Além disso, se você é sério o suficiente sobre a codificação para escolher uma estrutura de práticas recomendadas como o CodeIgniter, deve a si próprio pelo menos obter as medidas de segurança mais básicas corretamente.
<rant>
Basicamente, eis a seguinte: Não me importo se uma biblioteca de autenticação oferece vários recursos, gerenciamento avançado de funções, compatibilidade com PHP4, fontes CAPTCHA bonitas, tabelas de países, painéis de administração completos, sinos e assobios - se a biblioteca realmente fornecer meu site menos seguro por não seguir as práticas recomendadas. É um pacote de autenticação ; ele precisa fazer UMA coisa certa: autenticação. Se não conseguir fazer isso , está realmente fazendo mais mal do que bem.
</rant>
/ Jens Roland
Observe que a "listagem abrangente" de Jens Roland não inclui funções de usuário. Se você estiver interessado em atribuir diferentes funções de usuário (como administrador / usuário ou administrador / editor / usuário), essas bibliotecas permitem:
Tank_Auth (nº 1 acima na lista de Jens) não possui funções de usuário. Sei que não é exatamente parte da autenticação, mas desde
Faz muito sentido ter uma biblioteca para lidar com ambos, se você precisar. Estou mudando para Ion_Auth de Tank_Auth por causa disso.
Ion_auth! Parece uma pegada muito promissora e pequena! Eu gosto..
Sou desenvolvedor do Redux Auth e alguns dos problemas mencionados foram corrigidos na versão 2 beta. Você pode fazer o download deste site oficial também com um aplicativo de amostra.
- Requer carregamento automático (impedindo o desempenho)
- Usa o conceito inerentemente inseguro de 'perguntas de segurança'. Empecilho!
Agora, questões de segurança não são usadas e um sistema de senha esquecido mais simples foi implementado.
- Os tipos de retorno são uma mistura de códigos verdadeiros, falsos, de erro e de sucesso
Isso foi corrigido na versão 2 e retorna valores booleanos. Eu odiava a mistura tanto quanto você.
- Não se conecta ao sistema de validação do IC
O aplicativo de amostra usa o sistema de validação do IC.
- Não permite que um usuário reenvie um código de 'senha perdida'
Trabalho em progresso
Também implementei alguns outros recursos, como visualizações de e-mail, para poder usar os assistentes do CodeIgniter nos seus e-mails.
Ainda está em andamento, por isso, se tiver mais sugestões, continue com elas.
-Pipoca
Ps: Obrigado por recomendar o Redux.
Encontrei o Flexi Auth ( http://haseydesign.com/flexi-auth/ ). Parece muito promissor, e eu comecei a usá-lo. Tem características maravilhosas. Integra-se totalmente ao CI e vem com dois arquivos de biblioteca diferentes, nos quais um é muito carregado com todas as funções e o outro contém apenas as validações.
Uma das melhores é que o membro recém-registrado obtém acesso temporário por um determinado período de tempo no site, até clicar no link do email e ativar.
Talvez você ache o Redux adequado às suas necessidades. Não é um exagero e é fornecido apenas com recursos simples que a maioria de nós exigiria. O desenvolvedor e os colaboradores foram muito rigorosos quanto ao código que contribuiu.
Esta é a página oficial
Eu uso uma versão personalizada do DX Auth . Achei simples de usar, extremamente fácil de modificar e possui um guia do usuário (com ótimos exemplos) muito parecido com o do Code Igniter.
Veja também o BackendPro
Por fim, você provavelmente acabará escrevendo algo personalizado, mas não há nada errado com os conceitos de empréstimo do DX Auth, Freak Auth, BackendPro, etc.
Minhas experiências com os aplicativos empacotados são específicas de determinadas estruturas e tive problemas para integrá-los em meus próprios aplicativos sem exigir hacks; se o pré-pacote tiver uma atualização, preciso migrá-los.
Eu também uso Smarty e ADOdb no meu código de IC, portanto, não importa o que eu sempre acabe fazendo grandes alterações de código.
A autenticação do tanque parece boa, mas a documentação é apenas uma explicação de uma página sobre como instalar, além de uma rápida descrição de cada arquivo PHP. Pelo menos foi tudo o que encontrei depois de pesquisar no Google. Talvez o que as pessoas querem dizer acima quando dizem que o Tank Auth está bem documentado seja que o código esteja bem comentado. Isso é bom, mas diferente da documentação. Seria bom ter alguma documentação sobre como integrar os recursos do Tank Auth com o código existente.
Estou tentando Ion_Auth e aprecio isso, aliás ...
SimpleLoginSecure Torna a autenticação simples e segura.