Informática Numaboa - Tutoriais e Programação
Como as senhas são criptografadas no Joomla
Seg 15 Dez 2008 22:25 |
- Detalhes
- Categoria: Joomla
- Atualização: Segunda, 02 Julho 2012 19:45
- Autor: vovó Vicki
- Acessos: 10969
Meu amigo Tchó fez uma pergunta muito interessante: "Pretendo utilizar a tabela de usuários do Joomla para autenticar usuários em outras páginas que irei criar em um portal. Acontece que não sei como criptografar a senha digitada pelo usuário para comparar com a que está salva na tabela do BD do Joomla. Procurei muito pela Net mas ainda não encontrei... você poderia dar uma ajudinha?"
Claro que sim! E para que outros também possam usar estas informações, elas vão em forma de tutorial.
Antes de sujar a mão de graxa
Neste tutorial estou falando do método de encriptação de senhas do Joomla 1.5.x. Para reforçar a segurança deste CMS, estas versões apresentam um método bem mais robusto quando comparado com o método oferecido pelas versões mais antigas 1.0.x. Se você ainda não atualizou para a 1.5.x, está mais do que na hora de pensar em fazer isto - não só pelo aspecto segurança, mas também porque as versões 1.0.x vão ser descontinuadas.
Onde estão guardadas as informações
Não fui eu quem inventou o sistema de criptografia de senhas do Joomla, mas, como a criptografia é um dos meus assuntos preferidos, fui dar uma espiada no que a turma dos joomleiros fez. Localizei dois arquivos essenciais para entender a mecânica da cifragem: o primeiro é o arquivo joomla.php, que faz parte do plugin de autenticação; o segundo é o helper.php, que faz parte do conjunto de arquivos user da biblioteca joomla. Estão nos seguintes diretórios:
- /plugins/authentication/joomla.php
- /libraries/joomla/user/helper.php
Inicialmente abra o joomla.php e dê uma olhada no método onAutheticate:
Não é preciso destrinchar este código todinho (o que seria uma chatice), vou apenas apontar as partes que nos interessam. As linhas 70 a 78 mostram que o plugin acessou o banco de dados do Joomla para buscar algumas informações na tabela de usuários filtrando os dados pelo nome de usuário. Depois disto, se tiver encontrado alguma coisa, explode o que encontrou no campo password usando o delimitador ":" (linha 82). A primeira parte (a senha criptografada) é armazenada na variável $crypt; a segunda (o chamado sal) é colocada na variável $salt. Isto indica que as senhas guardadas são compostas por duas partes. Alguns exemplos são:
Logo a seguir, o método getCryptedPassword, que pertence à classe JUserHelper, é chamado com os parâmetros senha e sal (veja na linha 85). O que faz e onde está esta função? Na biblioteca do Joomla, mais especificamente no segundo arquivo que nos interessa: /libraries/joomla/user/helper.php. Veja a seguir o que são estas duas partes e como devem ser tratadas para que possamos conferir se determinado usuário está fornecendo a senha correta.
- Anterior
- Próximo >>