Como validar meu software na máquina do cliente?

Olá pessoal, estou iniciando uma startup de desenvolvimento de software e já tenho um cliente, até aí tudo bem. Tenho uma boa equipe e somos capazes de desenvolver facilmente esse sistema.
Porém, gostaria de saber como validar meu software na máquina do cliente? Como expirar a licença de utilização de uma forma segura, que o cliente não possa burlar (ou o mais próximo disso)?
Já pensei em várias formas, desde utilizar a data da máquina (a mais fácil de se burlar), até realizar uma autenticação online, porém, gostaria de permitir também o uso do sistema de forma offline, o que me sugerem?

Acho que você deveria criar no seu banco de dados uma especie de log ou seja ao logar no sistema ele salva no bd o usuario que logou a data e a hora ai se voce ver la uma data estranha foi burlado e vc mostra e converssa com seu cliente sobre… afinal que não é burlado atualmente… fika a dica se burlarem pelo menos você vai saber hehe …

@Alancarloscesar Opa, obrigado pela resposta, mas é bem mais complexo que isso. Como meu software funciona offline, essa questão de pegar qual foi o usuário não faz muito sentido pois não terei acesso ao banco, é offline.

Depende o que o sistema faz, se tiver emissão de notas etc… pode manter o com a data, pois se eles voltarem a data tudo sera cadastrado/gerado com data errada… assim mesmo que ele não pague ele pode continuar usando para pesquisar etc…(já que os dados são de direito dele). Com isso evita a confusão também, de o sistema ter sido “bloqueado”, o que se não estiver bem especificado pode dar problemas e eles falarem mal de sua startup para outros possíveis futuros clientes.

Não, meu sistema não tem emissão de notas. Foi mal pela demora, fiquei meio incomunicável esses dias. Cara, não gostaria de validar meu software baseado no princípio que caso seja burlado o sistema faça algo errado.

@montero Tive inclusive, uma ideia de validação esses dias. Vejamos se há uma falha nela, pois se há, eu ainda não identifiquei. Validaria meu sistema utilizando a data (sim, a data) da máquina do cliente e salvaria ela (a data da instalação - que será feita pessoalmente por mim, assim posso verificar a autenticidade da data) em meu DB que é totalmente criptografado. Passado determinado período de tempo (o que o sistema iria saber verificando a data atual) seria necessário uma serial key somente fornecida por mim, para que o sistema tornasse a funcionar, o que acham? (quanto a questão de isso ser chato para o cliente, isso não importa, pelo menos com esse cliente).

E o que aconteceria se ele voltar a data do windows?

Todo dia o sistema pega a data do SO, e, caso ela seja menor que a última armazenada, o sistema não iniciará. Então, voltar a data não seria uma opção muito boa.

Um dia que por algum motivo ele altere a data para o futuro, nem que seja por engano o teu sistema deixa de funcionar se ele repuser a data correta.

O problema é que o cliente tem direito a consultar os dados dele, mesmo que ele não possa mais utilizar o sistema, acho que a saida que te dei seria a melhor. porem se teu sistema não depende de data fica complicado…

Desculpa o mencionamento, errei ao mencionar kkkk

@pmlm, Na verdade não. Caso ele altere a data para o futuro, estará apenas perdendo dias de licença, já que o sistema tem uma data de validade. O meu sistema simplesmente terá um intervalo de datas em que permitirá ser utilizado, isso dentro do meu BD, caso a data atual não esteja entre o início e o fim, já era. Ah, e eu também faço validação na minha empresa, para que, caso o usuário altere a data para depois de um período válido e tente retornar, isso seja possível entrando em contato com o suporte da empresa. Até aqui minha validação continua inquebrável (a não ser que o usuário consiga alterar o BD, mas, desconsideremos essa hipótese, porquê se ele realmente conseguir, ele merece).

@montero, Quanto a isso, não há com que se preocupar. O meu sistema irá iniciar normalmente, mas com uma mensagem pedindo para contatar o suporte e com todas as operações de adição, geração de novos arquivos, e demais, travadas. O cliente poderá ver o que tem cadastrado, mas não poderá cadastrar.

Ou seja, a maneira de burlar o teu sistema é nunca sair do intervalo de datas definido.

1 curtida

@pmlm Meu sistema não permitirá que a data seja igual ou inferior a última data de acesso, caso seja, apresentará a mensagem pedindo pra contatar o suporte. Sendo assim, o usuário só poderá avançar no tempo, e, quando o intervalo de datas acabar, já era.

Se isso é um produto para vender para vários clientes, tens de ter uma boa equipa de suporte para resolver o problema, já que vai acontecer muitas vezes. E como resolves? Dás instruções de como fazer (e para a próxima eles já sabem) ou tens de te deslocar ao local (impensavel com os custos que vai trazer)?

Se é um software à medida para um cliente nem sequer faz sentido pensar em licenciamente, o cliente paga para ter uma solução “vitalícia”, pagando depois melhorias ou alterações de funcionalidades.

É um software desenvolvido especificamente para um cliente. Não, o cliente não paga por uma licença vitalícia, o modelo contratual definido não foi esse, caso fosse, o valor seria bem maior do que o acertado. Isso foi uma preferência do cliente né, enfim…A questão da validação é para que o software não se espalhe tlgd? Não quero que quem não pagou venha a usar. Embora seja um software desenvolvido “sob medida”, ele é bem genérico nas manipulações financeiras, o que poderia despertar o interesse de outros.

E se o cliente simplesmente, deslogar e logar novamente no mesmo dia, coisa do tipo reiniciou o computador? Simplesmente não pode mais usar o sistema pela data ser igual a do ultimo acesso?

Poderá sim, quando digo data, falo na verdade data, hora e minuto…

Tá certo que poucos trabalham entre as 23h e 0h, mas caso seja, com esse algoritimo, pode bugar na troca de horário de verão