Estou querendo fazer um sistema de login bem básico para meu software, mas de forma confiável. Sei que há inúmeras formas de se fazer via linguagens de busca (SQL, MySQL), mas como o meu projeto tenta dispensar isso. Queria saber se há um jeito confiável de se elaborar isso. Pensei em criar uma pasta com os logins (que seriam no formato login.txt) e com a senha criptografada dentro deles, mas não sei se isso é confiável (em questão de segurança, desempenho e integridade). Minha aplicação será para rede local e apenas a aplicação estará instalada no computador com as senhas. O que vocês me recomendam?
Logins via .txt? Há um jeito confiável de se fazer isso?
10 Respostas
Pq vc ñ pode usar banco? Se for limitação de máquina, pq vc ñ usa um banco em memória tipo HSQLDB?
Pq a ideia é criar um programa sem utilizar terceiros para gerenciamento.
Pq a ideia é criar um programa sem utilizar terceiros para gerenciamento.
Bem, eu acho arriscado você usar um arquivo de texto na hora da escrita.
Se duas pessoas forem escrever ao mesmo tempo, c tá lascado. Isso já é tratado automaticamente pelas transações do banco de dados, você terá que fazer na mão.
Integridade: Lembre-se também de sempre fazer backup do arquivo. Quando você altera direto no arquivo, pode acontecer dele corromper o arquivo.
Segurança: qualquer 1 com acesso a máquina poderá ter acesso ao arquivo, a mesma coisa para um DB. A diferença é que no DB você tem um login/senha que a pessoa precisaria para acessar. Com arquivo você terá que limitar quais usuários podem acessar a pasta. (OBS.: nunca deixe seu projeto rodando com usuário administrador)
Desempenho: isso é relativo. Eu diria que viria até a ser mais rápido pois você não vai usar rede para ler dados do banco, mas está suscetível a tomar um concurrent exception.
Pq a ideia é criar um programa sem utilizar terceiros para gerenciamento.
Bem, eu acho arriscado você usar um arquivo de texto na hora da escrita.
Se duas pessoas forem escrever ao mesmo tempo, c tá lascado. Isso já é tratado automaticamente pelas transações do banco de dados, você terá que fazer na mão.
Integridade: Lembre-se também de sempre fazer backup do arquivo. Quando você altera direto no arquivo, pode acontecer dele corromper o arquivo.
Segurança: qualquer 1 com acesso a máquina poderá ter acesso ao arquivo, a mesma coisa para um DB. A diferença é que no DB você tem um login/senha que a pessoa precisaria para acessar. Com arquivo você terá que limitar quais usuários podem acessar a pasta. (OBS.: nunca deixe seu projeto rodando com usuário administrador)
Desempenho: isso é relativo. Eu diria que viria até a ser mais rápido pois você não vai usar rede para ler dados do banco, mas está suscetível a tomar um concurrent exception.
Em questão de duas pessoas acessarem ao mesmo tempo tenho certeza que não ocorrerá, pois na máquina só haverá uma instância do programa, e em questão de segurança também acho que não terei que me preocupar, pois só haverá um único usuário na máquina
Uma instância é diferente de duas pessoas fazendo uma solicitação.
Se você tiver 2 ou mais usuários logados ao mesmo tempo, isso poderá acontecer caso haja problema de codificação.
De segurança eu disse alguém ir na máquina onde está o servidor, e acessar o arquivo de logins. Com os logins em mão uma pessoa poderia atacar utilizando bruteforce.
Uma instância é diferente de duas pessoas fazendo uma solicitação.
Se você tiver 2 ou mais usuários logados ao mesmo tempo, isso poderá acontecer caso haja problema de codificação.
De segurança eu disse alguém ir na máquina onde está o servidor, e acessar o arquivo de logins. Com os logins em mão uma pessoa poderia atacar utilizando bruteforce.
Trabalhei o acesso a arquivos e etc, em questão ao acesso de logins não acho que devo me preocupar, pois apenas pessoas autorizadas poderão ter acesso ao server. Só mais uma pergunta em questão a criptografia, você conhece algum jeito fácil de fazer?
Nessa sua situação por que não adiciona a lib Commons Codec? pra fazer um hash md5 fica bem simplesString md5 = DigestUtils.md5Hex(password);
Irei tentar fazer por isso. Me recomenda algum livro de criptografia? To querendo começar a estudar, pois eu só sei fazer criptografia com chave pública.
Com certeza existem livros excelentes sobre isso, mas eu nunca li nenhum, tudo o que eu li sobre o assunto eu li em foruns, sites educativos e coisas do tipo.
Se não me engano o site da OWASP tem algumas recomendações no assunto
Uma instância é diferente de duas pessoas fazendo uma solicitação.
Se você tiver 2 ou mais usuários logados ao mesmo tempo, isso poderá acontecer caso haja problema de codificação.
De segurança eu disse alguém ir na máquina onde está o servidor, e acessar o arquivo de logins. Com os logins em mão uma pessoa poderia atacar utilizando bruteforce.
Hebert, vc tem razão, até pq se pegarem o arquivo txt já era…rs
Se só uma pessoa vai usar, não será distribuído isso, não seria muito diferente de deixar a senha fixa no sistema. O ideal seria criar um login usando banco, a ideia do HSQLDB é boa, rápido e pratico (além de muito leve)