Problemas com codificação e leitura no BD

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
jjr_rs
Usuário Nível 2
Usuário Nível 2
Mensagens: 72
Registrado em: 18 Mai 2009 18:56
Localização: Porto Alegre
Contato:

Problemas com codificação e leitura no BD

Mensagem por jjr_rs »

Olá pessoal, estou me perdendo em uma situação e gostaria da ajuda dos amigos.

Tenho uma aplicação desktop que, entre várias rotinas, tem uma onde crio uma senha codificada e salvo no MySql.

Como é feito:
- o usuário digita a palavra que utilizará como senha
- o sistema recebe a palavra e percorre a mesma, letra por letra
- a cada letra o sistema retorna seu valor ASC e acrescenta + 100 a esse valor e converte novamente para seu respectivo CHR
- cria-se assim uma string com caracteres que são gravados no MySql

Agora estou gerando uma página em php, onde conecto esse BD e carrego os dados deste campo de senha.

O que acontece é que o sistema está trazendo caracteres diferente dos que estão gravados no BD.

Entendo que o PHP pode ter uma codificação diferente na hora de ler do BD. Gostaria de saber se há algum tipo de conversão que devo realizar para conseguir ler esta informação.

Desde já agradeço a ajuda !
Bahsis Sistemas de Gestão
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Problemas com codificação e leitura no BD

Mensagem por alxsts »

Olá!

Será que é o PHP? Você não cita qual SGBD utiliza mas, pode ser uma configuração na collation do SGBD. Tem como conferir se a string gerada pelo PRG está gravada no BD exatamente igual?

Dependendo do carácter que o usuário digitar, o valor ASCII dele somado a 100 pode gerar um carácter maluco que o BD não suporta e converte para outra coisa.

Este método que você está usando é pouco seguro. Basta alguém que programe saber que soma 100 ao ASCII de cada carácter e quebra a senha...

É mais seguro:

1 - no cadastramento da senha:
- receber o input do usuário
- criar uma string com o retorno de alguma função de criptografia da string do usuário, por exemplo SHA-1 ou SHA-2
- Gravar esta string no banco

2 -No Login
- receber o input do usuário
- criar uma string com o retorno de alguma função de criptografia da string do usuário, por exemplo SHA-1 ou SHA-2
- Comparar esta string com aquela gravada no banco. Se iguais, login ok.

3- No "Esqueci minha senha"
- repetir os passos do cadastramento da senha

Os passos acima estão em conformidade com o PCI-DSS (Payment Card Industry Data Security Standard), que é um organismo voltado à segurança das informações dos usuários de cartões de crédito. Por exemplo: quando se efetua uma compra pela internet, as empresas de e-commerce são proibidas de armazenar em seus bancos de dados o número e código de validação do verso do cartão (CVV) sem estarem criptografados. E mais, só podem armazenar a criptografia por um pequeno espaço de tempo, até que o pagamento seja confirmado ou negado pela administradora do cartão.

Tudo bem que não é à prova de hackers mas, quanto mais segurança melhor...

O tópico NFS-e SP Assinatura RSA-SHA1 pode ilustrar algumas situações.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Problemas com codificação e leitura no BD

Mensagem por JoséQuintas »

Pra não fugir muito do esquema atual, poderia gravar o ASCII ou em Hexadecimal, assim usa letras/números comuns que não dependem de codepage.
"165166165166" ou "ABABABABAB"
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
jjr_rs
Usuário Nível 2
Usuário Nível 2
Mensagens: 72
Registrado em: 18 Mai 2009 18:56
Localização: Porto Alegre
Contato:

Problemas com codificação e leitura no BD

Mensagem por jjr_rs »

Caro amigo alxsts,

Fico muito agradecido pela sua ajuda ! Realmente entendo o quão importante é utilizar um mecanismo que esteja de acordo com o PCI-DSS.

Apenas neste caso eu estava realizando um pequeno teste com um sistema antigo e assim tentei manter a forma de controle que utilizava na época. E não se preocupe !!! rsrsrsr... O método que lhe informei não era o que eu utilizei, foi apenas uma forma simples de explicar meu algoritmo. O que utilizo na verdade, realiza uma fórmula de cálculos bem mais elaborados (pensa na "Fórmula de Bhaskara"...algo assim...).

Mesmo assim, como lhe disse, era somente para realizar um teste e ver se era viável... ;)


Caro amigo JoséQuintas,

Agradeço novamente por mais essa ajuda ! Boa saída essa de utilizar a gravação utilizando ASCII ou Hexadecimal. Por ser um sistema que estou utilizando apenas como forma de teste, seguindo o esquema atual, será uma ótima saída !


Mais uma vez agradeço a ajuda e orientação dos amigos e colegas. Muito Obrigado !
Bahsis Sistemas de Gestão
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Problemas com codificação e leitura no BD

Mensagem por asimoes »

Acredito que esse assunto está mais apropriado para o fórum Bando de Dados
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder