Estou criando uma aplicação para gerência de informações de consultório médico, e criei um sistema de login. O problema é que usei os conceitos básicos do java, com direito a usuário armazenado em matriz de strings e usuários[i].contains(“usuário digitado”) dentro de loop for: sem nenhuma segurança. Um processo de engenharia reversa acessaria a matriz dos usuários dando risada.
Cara isso vai depender de como os seus usuário estão armazenados.
Se você ta carregando seus usuário para a memória em um array, você pode fazer com um Map<K, V>
Um exemplo poderia ser:
Map<String, String> usuarios = new HashMap<String, String>();
usuarios.put("jose", DigestUtils.sha256Hex("abc123"));
usuarios.put("paulo", DigestUtils.sha256Hex("a1b2c3"));
usuarios.put("maria", DigestUtils.sha256Hex("@85#ab"));
/* usuário e senha digitados */
String usuario = "jose";
String senha = DigestUtils.sha256Hex("abc123");
if (usuarios.containsKey(usuario)) {
if (usuarios.get(usuario).equals(senha)) {
System.out.println("Usuário válido!");
} else {
System.out.println("Senha inválida!");
}
} else {
System.out.println("Usuário não encontrado!");
}
/**
DigestUtils.sha256Hex vem da biblioteca commons-codec da apache
*/
Amigo,
qual o pacote desta classe? E…
Dada tua experiência, devo concluir que tal método put("maria", DigestUtils.sha256Hex("@85#ab")); está imune a decodificadores por engenharia reversa. Sim?
Parece que isso resolve. Como posso proteger meu sistema de outros métodos de violação? Há?
De qualquer modo, tá valendo.
[quote=lucasribeiro]
Dada tua experiência, devo concluir que tal método
put("maria", DigestUtils.sha256Hex("@85#ab"));
está imune a decodificadores por engenharia reversa. Sim?[/quote]
O texto @85#ab é a senha digitada pelo usuário o método sha256Hex de acordo com o javadoc faz o seguinte “Calculates the SHA-256 digest and returns the value as a hex string.”
acho pouco provável que alguém queira fazer engenharia reversa disso.
Estou criando uma aplicação para gerência de informações de consultório médico, e criei um sistema de login. O problema é que usei os conceitos básicos do java, com direito a usuário armazenado em matriz de strings e usuários[i].contains(“usuário digitado”) dentro de loop for: sem nenhuma segurança. Um processo de engenharia reversa acessaria a matriz dos usuários dando risada.
Alguém pode me ajudar?
Agradecido
Lucas Ribeiro[/quote]
Sem querer ser agressivo, usuário armazenado em matriz é muito bisonho, embarque um bd na aplicação ou coloque isso em um xml, pelo menos fica bem melhor.
Jweibe, se achar pergunta demais e não quiser responder, eu compreendo, rsrs.
Mas, essa classe oferece suporte a adição e edição de contas de usuário? Ou felizmente posso criar os mecanismos sozinho?
Tenho um pouco de dificuldades em decifrar a linguagem da documentação. Mas, e a biblioteca javax.auth, que dizeis?
Parece que postar no fórum “Java Avançado” seria presunção, mas não li a bula: “Java Básico” seria o correto?
Não encontrei a biblioteca commons-codec. Baixo pelo site da Apache?
Amigo alcionj, parece um erro de interpretação, você não está sendo agressivo, está sentindo que eu postei estas palavras justamente porque meus métodos estão bisonhos e eu gostaria de melhorá-los. Mas agradeço pela educação e cortesia da elucidação.
eu inseri o código que você postou no fonte da aplicação, com o import “org.apache.commons.codec.digest”;
baixei o pacote para a pasta do projeto e o descompactei;
uso eclipse kepler e adicionei no build path apenas as jars,
pois não entendo acerca dos tipos de biblioteca que ele fornece para minha opção em “Add Library” e resolvi chutar;
determinei a localização das fontes dos paths das 5 jars que adicionei…
E ainda continuo recebendo alguns palavrões: Multiple markers at this line
- Syntax error on tokens, AnnotationName expected instead
- Syntax error, insert "Type VariableDeclaratorId" to complete
FormalParameter
- Syntax error on token ""jose"", invalid FormalParameterList
- Syntax error on token(s), misplaced construct(s) Entretanto, peço que solicite o código, pois o post ficaria mais longo do que parece convir…
eu me esqueci de colocar o código no construtor… Coisa de iniciante.
Agora vou fazer as adaptações de acordo com o que aprendi.
Se quiser eu lhe aviso quando der certo.