Jump to content
Sign in to follow this  
iniciante

Login seguro num site basico

Recommended Posts

iniciante

Boa tarde. Eu estou a fazer um site que permite que os utilizadores se registem e dps possam fazer login para entrar na sua area privada. Mas queria user um pouco de segurança no que toca à password do utilizador! o que eu fiz, e era nisso que queria pedir a opinião de alguem com mais experiencia, foi o seguinte:  (O site é em asp.net)

Registar:

  - o utilizador insere os seus dados e a password

  - ao carregar no botão inscrever, na propriedade click do botão no lado do servidor, este vai buscar os valores das txt e encripta a password com o algoritmo triple-DES e guarda os dados na BD.

Login:

  - o utilizador insere o seu email e password.

  - ao carregar no botão logar, na propriedade click do botão  no lado do servidor, este vai buscar os valores das txt, agarra no email e vai à BD procurar se esse email existe:

        - caso o email exista, devolve a password que está encriptada, desencripta a password e compara com aquilo que o user inseri-o na txt. se as strings forem iguais o login está correcto e ele entra na sua area privada.

Queria prg se acham que é uma forma segura de fazer login ou se propoem algo melhor..


RC

Share this post


Link to post
Share on other sites
herty

O teu pensamento ta errado, tu nem devias conseguir desencriptar a password :)

E para saber se a password esta correcta, encriptas a password que o utilizador fornece no login e comparas com a da base de dados que também se encontra encriptada :)

Good Luck

Share this post


Link to post
Share on other sites
iniciante

entao se eu tenho a chave para encriptar, utilizo a msm chave para fazer a operação inversa e conseguir desencriptar =s! eu n comparava as passwords encriptadas  porque assim pensava que se alguém apanha-se a password encriptada seria mais fácil de roubar a senha depois =s


RC

Share this post


Link to post
Share on other sites
herty

Assim nunca é seguro nenhum sistema xD

Podes sempre encriptar 2 vezes a pass para a base de dados.

Encriptas o login 1 vez e desencriptas a da bd 1 vez :)

Share this post


Link to post
Share on other sites
softklin

O teu pensamento ta errado, tu nem devias conseguir desencriptar a password :)

E para saber se a password esta correcta, encriptas a password que o utilizador fornece no login e comparas com a da base de dados que também se encontra encriptada :)

Good Luck

Neste caso era possível, porque o iniciante (criador do tópico)está a usar 3DES, que é um algoritmo de cifra por blocos e não de geração de hash (unidireccional): basta ter a chave usada na altura da cifra para obter os conteúdos de volta.

No entanto, podes seguir essa recomendação e usar uma hash unidireccional, por exemplo, o SHA1. Basicamente, isto vai transformar a password numa hash/síntese composta por 40 caracteres.

Por exemplo, se a minha password for "bananas" a sintese que será guardada na base de dados será:

d13218f1b0f9b38b21518392d208dbfb3bc2893d

Num futuro login, tudo o que tens a fazer é gerar uma síntese a partir da password fornecida, e comparar essa síntese à da base de dados, por exemplo, se eu no login fornecer a palavra "banana" (diferente), isto vai dar:

250e77f12a5ab6972a0895d290c4792f0a326ea8

que é completamente diferente da sintese que esta na base de dados, logo a password está errada.

Usando o SHA1, ganhas também a vantagem de, no caso e um ataque à base de dados, o atacante não consiga (teoricamente) recuperar as passwords, através de uma chave, porque tendo a síntese, não existe nenhuma função que te dê de volta a password (é uma cifra destrutiva).

Se eventualmente precisares de fazer uma recuperação de password, simplesmente pedes ao utilizador para redefinir uma nova, através de confirmação por mail ou pergunta secreta.

NOTA: gerei exemplos reais, daqui:

http://sha1-hash-online.waraxe.us/

No .Net também existem métodos para gerar estas sinteses, dá uma olhada aqui:

http://msdn.microsoft.com/en-us/library/system.security.cryptography.sha1.aspx

http://dotnetpulse.blogspot.com/2007/12/sha1-hash-calculation-in-c.html


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
iniciante

então a ideia é aplicar o Hash à password e dps encriptar o resultado da hash com o 3DES e guardar na BD? e para fazer a verificação do login, desencripto a hash da BD  e aplico a hash àquilo que o user escreveu, ou apenas aplico a hash naquilo que o user escreveu e encripto com o 3DES e comparo pa ver se é igual, seguindo a ideia do herty?

EDIT

ou apenas esqueco o 3DES e aplico so o hash?


RC

Share this post


Link to post
Share on other sites
softklin

O que foi sugerido foi usares uma hash unidireccional: tens várias, MD5, SHA1, etc. Ao usares uma hash SHA1 não precisas de passar novamente por 3DES, nem te adianta muito: a hash, por si, não pode ser usada para recuperar a password original, mas apenas para usar numa comparação. Lê o meu post anterior para veres um exemplo de comparação.

A minha recomendação é usares hash de SHA1. A vantagem que tem sobre o método que usas (3DES) é que o atacante não consegue descobrir os dados que estão por detrás da sintese, enquanto que com 3DES basta descobrir a tua chave para decifrar o conteúdo.

Em última análise, ambas são fiáveis, mas com o 3DES tens a responsabilidade de manter a chave em segredo.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.