Comments (8)
Obrigado @CauanCabral .
Se você olhar a entidade usuário no branch v2.0 já está assim (algoritmo + salt): https://github.com/novosga/novosga/blob/v2.0/src/Novosga/Entity/Usuario.php
Por enquanto no security.yml só tem definido MD5, mas depois vou criar uma entrada para o MessageDigest do próprio Symfony:
https://github.com/novosga/novosga/blob/v2.0/app/config/security.yml
E por exemplo no security.yml:
encoders:
...
bcrypt:
algorithm: bcrypt
cost: 15
Por fim estou pensando em detectar que o perfil do usuário é da versão antiga e levar o usuário para uma página para atualizar o perfil. Aí nesse caso poderia até adicionar o campo e-mail (que daria para utilizar para envio de alertas).
from novosga.
@CauanCabral o método de encriptação não foi alterado para manter compatibilidade com o SGA Livre (que usa apenas md5).
Então, acho que o requisito para essa mudança, é a implementação de um "esqueci minha senha" para depois quando assumirmos uma nova estratégia de hash numa próxima versão, não invalide a aplicação já instalada.
ps: Migrar as senhas creio não ser a alternativa. O negócio é assumir que teve que melhorar a segurança e que os usuários atualizem suas senhas.
from novosga.
Fiz a implementação da geração e verificação da senha, falta ainda trabalhar na recuperação da mesma.
from novosga.
Pensando melhor, essa recuperação de senha (por enquanto) não vai funcionar legal. Porque na tabela de usuários não tem coluna para e-mail.
from novosga.
Então, reparei isso.
Incluí um campo para email e outros dois para recuperação de senha, mas isso só funcionará para quem já tem email cadastrado no sistema.
Como você comentou na outra issue, talvez a solução seja manter um campo secundário para armazenar a antiga senha, como um modo de compatibilidade mesmo. Vou pensar um pouco em como implementar essa solução.
from novosga.
👍
from novosga.
- Criar coluna "algoritmo" para guardar algoritmo utilizado no hash da senha. Atualmente usa MD5, então no script de migração do banco já deve iniciar a coluna com "md5".
- Criar interface PasswordProvider e suas especializações (ex Md5PasswordProvider)
- Criar factory do password provider para retornar a instância a partir do usuário
- Definir um novo algoritmo para armanezar as senhas e implementar o seu provider
- Utilizar novo provider ao criar novos usuário ou atualizar senha
from novosga.
@rogeriolino estava dando uma olhada na situação do projeto depois de um bom tempo afastado e gostei bastante do que tem feito, parabéns.
Tenho algumas ideias para implementar essa issue, posso fazer uma proposição via PR?
- Acho que não precisa da coluna com o algoritmo. Pelo tamanho da string de hash já podemos deduzir que é MD5 ou um formato moderno
- Como a versão 2.0 é baseada no Symfony 3, que por sua vez tem dependencia no PHP 5.5, podemos usar as extensões nativas de password que foram implementadas e na época que abri essa issue não existiam ( http://php.net/manual/pt_BR/function.password-hash.php )
- O restante do seu checklist eu estou de acordo, só faria transparente a migração de senha: sempre que um usuário fizer login e ainda tiver hash md5, o sistema detecta e faz um novo hash a partir da senha fornecida usando a nova implementação.
from novosga.
Related Issues (20)
- Dúvida adicionar botão para chamada de senha.
- Erro de chave estrangeira ao reiniciar senhas HOT 6
- Ver com relatórios
- Erro reset automático senha v2.0.8 - Banco Postgres HOT 1
- Erro ao redirecionar no PostgreSQL
- Android
- Quantidade Mínima de Chamadas
- NovoSGA v3.0 HOT 9
- Como configurar HTTPS no Docker? HOT 1
- Error al Habilitar modulos
- Invalid AJAX response HOT 2
- Tempo de agendamento expirado HOT 1
- Alterar o layout HOT 1
- Acoes adicionais para o MERCUR - V2.1.
- Senhas se Repetindo em um Padrão Aleatório HOT 2
- Erro na instalação do SGA 2.1 via composer
- Dependência PHP de desenvolvimento é utilizada em produção HOT 3
- AdminController - limparAtendimentos
- [novosga v2.0] Missing servico in the painel response HOT 1
- Erro ao utilizar novosga:reset HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from novosga.