Validação de Uso no Software  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
hishin
Debugger

Membro desde: 22/08/2008 08:16:42
Mensagens: 65
Offline

bom dia a todos.

Estou quebrando a cabeça com o meu software e gostaria de ver se vcs podem me ajudar.

tenho um programa q rodará localmente em uma empresa, eles pagaram um aluguel para o uso, mas querem utilizar esse sistema nas filiais com acesso ao servido da matriz (onde o sistema será instalado). Até aí tudo bem, consigo fazer o programa acessar pela internet, mas o que eu realmente quero é saber como faço para validar esses usuários externos.

Porque é o seguinte, as filiais terão que pagar o aluguel tb e para evitar "golpes" tenho que criar uma forma de que eu libere o acesso a esses que pagam o software e não dê para a matriz "dar um jeitinho" de outras filiais usarem sem pagar.

Pensei no seguinte: 1º opção: validação por ip externo, faz um comparativo e se for igual, passa. Problema: se o ip for dinâmico... ferrou.

2º opção: validação do nome da maq, tem um cadastro na matriz onde o nome da maq está instalado e seu ip interno. Problema: A empresa pode formatar a maq e ela não acessar mais, ou usar o nome da maq em outra estação. Embora eu faria um comparativo de nomes, os nomes não poderiam ser iguais.

3º opção: validação pelo mac address. Problema: Trocou a placa de rede, ferrou.

4º opção: validação do ip interno. Problema: Se mudar o ip interno ou for dinâmico, não dará certo.

Um amigo meu falou para fazer um registro no windows (no caso, o programa rodará em estações windows msm), mas não tenho nem idéia de como criar um registro e como usar isso para validar.

Vcs podem me ajudar a encontrar uma solução?

Desde já agradeço a todos.

Abraço

PS: Caso eu não tenha sido claro em algumas informações, por favor me digam.

Open your mind, use open source.
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline

O servidor da matriz é você que programa?

Acho que é mais fácil definir um contrato de logins simultâneos. Assim, seu sistema pode contar quantos usuários tem logados e impedir e entrada de novos caso o limite já tenha sido atingido.


Validar por IP realmente não é uma boa. É muito fácil burlar. Seja o interno ou externo.

Por MAC, traz inconvenientes para o seu cliente, e para você também. Ele não poderá trocar o próprio hardware sem ter que falar com você. Se isso ocorrer numa emergência, você pode ter mais dor de cabeça do que gostaria.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
hishin
Debugger

Membro desde: 22/08/2008 08:16:42
Mensagens: 65
Offline

Primeiramente, obrigado pela resposta.

Então, só instalarei o bd. nada mais.

Sobre acesso simultaneo, hmm... eu não estava pesando em usar limites de acesso. Mas é um boa alternativa.
eu poderia controlar somente os acessos remotos? por exemplo: para a matriz teria acesso ilimitado mas para acessos das filiais seria controlado.

Poderia fazer isso comparando os ip's externos, por exemplo: pego o ip externo da matriz e comparo com o q está acessando remotamente, se forem diferentes, conta como um acesso.
Será q dá certo?

Abraço!

Open your mind, use open source.
marcobiscaro2112
JWizard

Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline

Por IP, somente se usado uma conta DNS (como No-IP) ou se o IP público das filiais forem estáticos (pouco provável).

Por MAC, nem é possível, uma vez que os roteadores da Internet trabalham na camada 3 do modelo OSI, o que faz com que todas as informações de camada 2 (o MAC) sejam perdidas a cada salto (a cada roteador que o pacote passa, um novo MAC de origem e de destino).

Portanto, o número máximo de usuários simultâneos que o Vinícius sugeriu parece ser uma boa.

Marco Biscaro.

Seja livre!

Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?

Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[Email] [WWW] [MSN]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline

marcobiscaro2112 wrote:Por MAC, nem é possível, uma vez que os roteadores da Internet trabalham na camada 3 do modelo OSI, o que faz com que todas as informações de camada 2 (o MAC) sejam perdidas a cada salto (a cada roteador que o pacote passa, um novo MAC de origem e de destino).


Eu imagino o mac sendo possível apenas se a aplicação incluído no seu handshake, ou seja, se ele programar isso. Direto pelo pacote é virtualmente impossível, até pq o Java nem sequer disponibiliza a leitura do pacote em modo "raw".

De qualquer forma, mesmo que ele viabilize isso, ainda resta os inconvenientes que eu falei. E eu, particularmente, sou radicalmente contra DRMs que tornem a vida do cliente mais complicada do que já é.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
hishin
Debugger

Membro desde: 22/08/2008 08:16:42
Mensagens: 65
Offline

Entendo... realmente a idéia dele é melhor. mas isso terá que ser para todos os acessos certo? tanto interno qto externo.

não tem como identificar que é de fora? e contar somente eles?

Abraços.

Open your mind, use open source.
marcobiscaro2112
JWizard

Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline

hishin wrote:Entendo... realmente a idéia dele é melhor. mas isso terá que ser para todos os acessos certo? tanto interno qto externo.

não tem como identificar que é de fora? e contar somente eles?

Abraços.

Isso é menos complicado. Você pode pegar o IP remoto da conexão e verificá-lo: se for o IP do gateway da rede, é conexão externa. Caso contrário, é da LAN.

Marco Biscaro.

Seja livre!

Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?

Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[Email] [WWW] [MSN]
hishin
Debugger

Membro desde: 22/08/2008 08:16:42
Mensagens: 65
Offline

Maravilha, vou tentar aq. Grato a todos pela ajuda!

Até mais.

Open your mind, use open source.
osmio
Java Ninja

Membro desde: 22/08/2006 20:27:54
Mensagens: 252
Offline

Restrições aplicadas em fonte não compilada (por exemplo regras no banco de dados) são muito mais fáceis de burlar (ainda mais levando em consideração que o banco de dados esta no cliente).

At.

"O pensamento lógico pode levar você de A a B, mas a imaginação te leva a qualquer parte do universo."
- Einstein, Albert
[Email]
hishin
Debugger

Membro desde: 22/08/2008 08:16:42
Mensagens: 65
Offline

Estou ciente disso, mas como fazer?

tem alguma sujestão?

abraço

Open your mind, use open source.
orlandocn
Java Ninja
[Avatar]

Membro desde: 30/07/2005 12:42:29
Mensagens: 262
Offline

hishin wrote:Estou ciente disso, mas como fazer?

tem alguma sujestão?

abraço


talvez o jlicense te ajude

CGHP - Certified Go Horse Professional
CFMU - Certified Fanfarrão Masters of the Universe
next target --> CFG - Certified Fanfarrão Guru
"Scrum é apenas XP sem as práticas e técnicas que a fazem funcionar."
hishin
Debugger

Membro desde: 22/08/2008 08:16:42
Mensagens: 65
Offline

embora eu ache o seguinte, se o sistema está funcionando perfeitamente e o cliente confia no programador, acho difícil ele confiar o source a outro programador msm ele sendo da empresa pq cada um entende o seu codigo.. ler o cod dos outros e alterar é um saco e claro se algum dano acontecer, o programador, no caso eu, não se reponsabilizaria. Claro que colocarei isso no contrato, me imunizando disso. Caso tenha a quebra, o cliente paga multa ou para arrumar o soft depois, cobrarei mais caro.. daí sei la.. tem q ver.

abraços

Open your mind, use open source.
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team