Cada aplicação web tem funcionalidades diferentes e são construídas para propositos diferentes. No entanto existe um conjunto de funcionalidades comuns em todas elas, como por exemplo:
- Registar e activar conta de um novo utilizador no sistema
- Recuperar password
- Apagar conta de utilizador no sistema
Cada aplicação implementa estes casos de uso de modos diferentes. Cada modo tem as suas vantagens e desvantagens. Depende de quem o está a implementar e como normalmente gosta de implementar.
Seguidamente vou falar sobre estes 4 casos de uso e falar no que eu acho que seja a melhor e mais segura maneira de os implementar
Registar e Activar conta de um novo utilizador
Para este caso, existem duas soluções diferentes que me agradam:
A primeira é guardar na Base de dados informação sobre o username, useremail, userid, password (cifrada com hash), data de registo (timestamp) numa tabela. A password seria gerada automaticamente pelo sistema e enviada para o email da pessoa em questão. A conta em si já estaria activada, com a nuance que quando o utilizador entrasse no sistema pela primeira vez era obrigado a mudar a password.
A segunda seria guardar numa tabela da base de dados os campos username, useremail, userid, password, data de registo (timestamp) e flag de activação de conta. O utilizador registava-se com a password que pretendia, no entanto a sua conta não era automaticamente activada (a flag de activacao estaria a false). Assim que acabasse o registo seria enviado ao utilizador um email com um link que permitia ao utilizador activar a sua conta para poder ser usada. Este link poderia ser o timestamp do registo encoded mais o hash da sua password. Apenas a pessoa dona do email é que poderia de facto activar a sua conta (passando a flag de activação a true). Estes dois métodos alias são constantemente utilizados hoje em dia.
Recuperar password
Este caso de uso é bastante simples quando não guardamos a password do utilizador cifrada. Para isso basta enviar um email ao utilizador no qual informamos qual é a sua password. Apesar de simples este método de guardar a password em claro na base de dados não é uma boa prática e não deve ser considerado.
Quando a password é cifrada e guardada na base de dados o caso é diferente. Não é nos possível obter uma password através da sua hash, logo não é possível enviar um email ao utilizador com a sua password. Um modo agradavel de resolver este problema é do sistema permitir um modo de fazer reset à password de modo a que o utilizador escolha qual será a sua nova password. Para isso é necessário criar um link especial que apenas poderá ser acedido pelo dono da conta (a ser enviado por email) de modo a fazer um reset à sua password. Esse link poderá ser o timestamp do registo da conta mais o hash da password original.
Desactivação de conta de utilizador no sistema
Apenas um utilizador que tiver conta e estiver dentro do sistema é que poderá aceder a este caso de uso e confirmar se de facto quer apagar a sua conta do sistema. Apesar de simples este caso de uso tem uma curiosidade. A opção de Apagar deveria ser realmente eliminar toda a informação sobre o utilizador e a sua conta naquele sistema. No entanto em alguns sistemas, como por exemplo em redes sociais como o hi5 isto não se verifica. Mesmo que tenhamos optado por apagar a nossa conta hi5, os nossos dados mantêm-se no sistema e se quisermos voltar a registar uma conta de hi5 com o email que ja utilizamos previamente, a nossa conta é “restaurada”. Não sei se não haverá aqui alguma violação de informação. Quem sabe algum de vocês poderão dar a vossa opinião sobre isto?