GERENCIAMENTO DE SENHAS NO CLIPPER

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

vagner_cip
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 05 Out 2004 14:07

GERENCIAMENTO DE SENHAS NO CLIPPER

Mensagem por vagner_cip »

Olá a todos

Estou com problemas com gerenciamento de senhas, tenho um conjunto de sistemas de utiliza um gerenciados de senhas criado em dbf, mas as senhas são vísiveis a qualquer um que abrir o banco, gostaria de saber se alguem tem uma idéia de como eu posso proteger este banco ou desenvolver outro mais seguro.

Eu pensei em usar a mesma senha do windows para logar no prog mas não sei como fazer isso.

alguém pode me dar uma luz.

Muito grato.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

A bem da verdade, não se costuma armazenar senha. O usual é que você some as strings scorrespondentes ao nome e senha, calcule seu hash (pode ser MD5 - o mais usual nessa área) e armazene a string resultante. Ao obter o log-in, repete-se o processo e compara-se o resultado com o hash armazenado.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

Voce pode criptografar os campos que contenham as senhas.
Existem muitas ferramentas para isso. Uma delas é a função Crypt() da CaTools,
existe também uma função do nosso amigo Maligno CRC32().

Só para exemplificar:
Em xHarbour fiz uma rotina que pega a senha digitada pelo usuario e criptografa com a função HB_MD5(), ficou o bicho !!!

Ah claro, se o problema é na hora de digitar, use a clausula 'Password" nos get´s, que ela mostra asteriscos na digitação.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
vagner_cip
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 05 Out 2004 14:07

Senhas

Mensagem por vagner_cip »

não entendi nada ?
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

alaminojunior escreveu:Voce pode criptografar os campos que contenham as senhas. Existem muitas ferramentas para isso. Uma delas é a função Crypt() da CaTools, existe também uma função do nosso amigo Maligno CRC32().
CRC32 é outro hash. Não é muito utilizado pra isso.
Só para exemplificar:
Em xHarbour fiz uma rotina que pega a senha digitada pelo usuario e criptografa com a função HB_MD5(), ficou o bicho !!!
É isso. Exatamente o que eu disse. Armazena-se o hash e mais nada. No log-in, é só repetir o cálculo e comparar com o hash gravado. Simples de tudo. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

Depois dessa, permita me dizer o mesmo.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
vagner_cip
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 05 Out 2004 14:07

crc32()

Mensagem por vagner_cip »

onde posso conseguir esta função crc32()
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Senhas

Mensagem por Maligno »

vagner_cip escreveu:não entendi nada ?
Exemplo simples: você tem o nome de log-in na variável cName e a senha na variável cPass. Calcule o hash MD5 para a string que soma essas variáveis: cHash = CalcMD5(cName+cPass). Essa variável cHash conterá algo como "00C91E8CA42D4E240B4207F0CB5CBE27", que é uma string típica do MD5. Armazene isso. No que o usuário fizer o log-in novamente, repita o processo e compare a string desse hash com a string que você armazenou. Detalhe: letras maiúsculas e minúsculas fazem diferença no cálculo do hash.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: crc32()

Mensagem por Maligno »

vagner_cip escreveu:onde posso conseguir esta função crc32()
No link http://pub.buzinello.com/index.php?d=./ ... r/sources/ você tem o CRC32. Mas ele não é o que se recomanda para esse tipo de serviço, pois é um algoritmo considerado muito fraco pra isso.

No link http://pub.buzinello.com/index.php?d=./ ... pper/libs/ você tem o arquivo MD5.ZIP. Ele é melhor pra isso. No ZIP tem tudo explicado.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
vagner_cip
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 05 Out 2004 14:07

Muito Grato a todos

Mensagem por vagner_cip »

Muito Grato a todos
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

CRC32 é outro hash. Não é muito utilizado pra isso.
É bem verdade, esta função transforma tudo num bloco de 8 bits, fácil de haver coincidencias. Já a MD5 é 32 bits, mais chique.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
jairfab
Usuário Nível 3
Usuário Nível 3
Mensagens: 252
Registrado em: 21 Mai 2007 09:43
Localização: São Paulo, Região Leste - Suzano

Mensagem por jairfab »

Encript ficaria mais ou menos assim

Function ENCRYPT(Arg1, Arg2, Arg3) /// Cryptografa texto

Local Local1, Local2
Local1:= ""
Arg3:= IIf(ValType(Arg3) == ValType(120) .AND. Arg3 != Nil, Arg3, ;
120)
Arg2:= IIf(ValType(Arg2) == ValType(.F.) .AND. Arg2 != Nil, Arg2, ;
.F.)
If (ValType(Arg1) = "C")
If (Arg2)
For Local2:= Len(Arg1) To 1 Step -1
Local1:= Local1 + Chr(Asc(SubStr(Arg1, Local2, 1)) + Arg3)
Next
Else
For Local2:= 1 To Len(Arg1)
Local1:= Local1 + Chr(Asc(SubStr(Arg1, Local2, 1)) + Arg3)
Next
EndIf
EndIf
Return Local1

Para Gravar no banco de Dados:
Replace SENHA with Encrypt(WSENHA)
Replace ACESSOS with Encrypt(WACESSOS)
Avatar do usuário
jairfab
Usuário Nível 3
Usuário Nível 3
Mensagens: 252
Registrado em: 21 Mai 2007 09:43
Localização: São Paulo, Região Leste - Suzano

Mensagem por jairfab »

********************************
Function DECRYPT(Arg1, Arg2, Arg3) /// Descriptografa texto

Local Local1, Local2, Local3
Local1:= ""
Local2:= 0
Arg3:= IIf(ValType(Arg3) == ValType(120) .AND. Arg3 != Nil, Arg3, ;
120)
Arg2:= IIf(ValType(Arg2) == ValType(.F.) .AND. Arg2 != Nil, Arg2, ;
.F.)
Arg3:= IIf(Arg3 > 128, Arg3 % 128, Arg3)
If (ValType(Arg1) = "C")
If (Arg2)
For Local3:= Len(Arg1) To 1 Step -1
Local1:= Local1 + Chr(Asc(SubStr(Arg1, Local3, 1)) - Arg3)
Next
Else
For Local3:= 1 To Len(Arg1)
Local1:= Local1 + Chr(Asc(SubStr(Arg1, Local3, 1)) - Arg3)
Next
EndIf
EndIf
Return Local1
Responder