Qual a melhor maneira de identificar uma máquina física?
O problema é o seguinte:
Uma página web acessa um aplicação no servidor, e tem q fazer um teste se aquela máquina é “conhecida”.
Qual a melhor maneira de se fazer isso ?
Agradeço desde já…
Qual a melhor maneira de identificar uma máquina física?
O problema é o seguinte:
Uma página web acessa um aplicação no servidor, e tem q fazer um teste se aquela máquina é “conhecida”.
Qual a melhor maneira de se fazer isso ?
Agradeço desde já…
Quem é que tem de saber o que de quem?
É a máquina que está hospedando o site Web que precisa saber se o servidor é aquele mesmo ou um servidor fajuto, ou é o servidor que precisa saber se a requisição veio de um cliente válido (que nesse caso é a máquina que hospedou o site Web)?
De qualquer maneira a solução não é exatamente simples; mesmo usar certificados digitais e SSL não é mais garantia absoluta de nada.
O que vc quer dizer quando se refere a maquina ser “conhecida”?
Voce gostaria de obter o ip da máquina do servidor?
:D:D:D:D
galera… deixa eu explicar melhor…
tenho um servidor que tem uma aplicação que será acessada por consultórios através da internet. Eu queria restringir o acesso através de cadastramento das máquinas físicas dos consultórios.
tipo aquele cadastramento de computadores do Banco do Brasil.
sacaram ?
Sempre pedem para fazer isso, e sempre dá problemas com isso.
a) Digamos que você tente reconhecer a máquina pelo IP. Se a ligação for discada, um abraço. Ou se a máquina estiver atrás de um firewall ou proxy, você vai pegar só o IP do firewall ou proxy (por exemplo, o IP do provedor ADSL, como o Speedy da Telefônica), não algum IP interno (que costuma se repetir e costuma ser inútil. 10.100.1.1 pode ser em qualquer rede interna.)
b) Digamos que você tenha um applet que possa fazer isso por você (obter alguns dados da máquina, como o nome dela, e o MAC Address). Talvez você tenha algum sucesso nessa empreitada. Mas o browser sozinho não pode fazer isso por você, até por questões de privacidade.
pois eh… mas gostaria de saber se existe como identificar unicamente uma máquina… q não seja pelo MAC ou pelo Serial do HD…
pode ser um arquivo gerado que só a JVM entenda, por exemplo…
quero saber quais as opções que tenho para fazer isso… q pelo menos dificulte a quebra de segurança e eu não expor o login e senha do meu banco, por exemplo…
Só para ter uma idéia, vamos ver o que o browser envia para um servidor:
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.7,pt-br;q=0.3
Connection: keep-alive
Host: www.grc.com
Referer: http://www.grc.com/x/ne.dll?rh1dkyd2
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.8
Cookie: temp=xxxxxxx0gxxxx; perm=xxxxx14xxxxxx
Content-Length: 31
Content-Type: application/x-www-form-urlencoded
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
FirstParty: https://www.grc.com
ThirdParty: https://www.grctech.com
Secure: https://www.grc.com
Nonsecure: http://www.grc.com
Session: yyyyyyy2yyyyy
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*
Accept-Language: pt-br,en-us;q=0.5
Connection: Keep-Alive
Host: www.grc.com
Referer: http://www.grc.com/x/ne.dll?rh1dkyd2
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30)
Cookie: temp=xxxxxxx135x0x; perm=xxxxx5xxxxx
UA-CPU: x86
Content-Length: 32
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
FirstParty: https://www.grc.com
ThirdParty: https://www.grctech.com
Secure: https://www.grc.com
Nonsecure: http://www.grc.com
Session: 5x52xxx3xxx4x
Você viu que é possível saber até o tipo da CPU (16 ou 32 bits) no caso do IE7, mas não é possível saber o nome da máquina. Se houver um proxy no meio pode ser que ele ponha um header “X-Forwarded-For” também, que daria o IP da máquina na rede local, mas também isso não é certo.
O número de série do HD é muito mais difícil de obter em Java que o MAC Address. Se você for tentar alguma coisa, use o MAC Address.
pois eh, mas como você falou, se não tiver um ip fixo, aí babou…
eu já tenho 2 códigos: um consegue pegar o número de série do HD usando JNI… e outro pega algumas informações sobre a máquina, inclusive o MAC, feito em somente em java .
A questão é q se eu colocar no servidor, ele pega as informações do servidor e não da máquina que está acessando o sistema pela internet…aí vai validar qualquer máquina…
Esse código que você mencionou não é para ficar no servidor, e sim no cliente. Isso normalmente funcionaria bem se você tivesse uma aplicação Java no cliente, ou então um Java Web Start. No caso do MAC Address uma applet assinada funcionaria OK (e restringindo o acesso a clientes que tivessem o Java 6.0 apenas.)
pois eh… o lance é q queria tudo rodando no servidor…
o applet assinado dá blz, mas vc sabe como comunicar os dados que o applet irá pegar com a aplicação no servidor, já que o applet não se comunica com o banco, msmo assinado…
bem… eu acho isto meio dificil… como mostrado tudo que o boswer cliente envia para o servidor sao os headers mostrados… e nada mais alem daquela informação… para identificar a maquina pelo mac ou pelo serial do hd vc pode ter certeza que o cliente não ira te mandar estes dados pois ele esta sobre o boswer e ele so envia as informações com os headers mostrados… a unica maneira que vejo é instalar algum outro software diferente que o boswer na maquina de cada cliente para ele te enviar as informações nesseçarias…
com uma aplicação normal cliente - servidor rodando pelo boswer é impossivel…
galera… deixa eu explicar melhor…tenho um servidor que tem uma aplicação que será acessada por consultórios através da internet. Eu queria restringir o acesso através de cadastramento das máquinas físicas dos consultórios.
Se o seu objetivo é apenas deixar certos consultorios usarem o sistema use uma chave criptográfica.
Se a sua intensão é que apenas algumas máquinas de certo consultório usem o sistema isso é um erro muito grave de licenciamento. É muito parecido com o windows amarrado a uma só configuração de hardware.
Se o seu sistema é web é porque não interessa qual máquina o acessa. O que vc quer fazer é diretamente conflituante com a politica de um sistema web. Logo, vc vai ter muitos problemas em instituir essa regra ( supondo que consegue)
caro rmxsantiago;
As pessoas ficam dizendo as coisas sem ter certeza do que dizem. Eu tenho os dois Applets que voce necessita. Eles capturam o mac address da placa de rede da pessoa que entra no seu site e o serial do HD. So basta ter instalado na maquina do cliente o JAVA™ Runtime Environment Update 2. Ele solicitará que o cliente autorize um certificado. A partir da autorização o cliente consegue logar no site. Dessa forma o applet entra em ação e detecta o mac address e o serial do HD. Funciona perfeitamente. Com ele, voce conseguirá restringir qual computador, ou quantos poderão entra no seu site. Se quiser maiores informações, queira entrar em contato pelo e-mail [email removido]. Se quiser ver os Applets em funcionamento entre em http://www.meumacaddress.com.
Um abraço
Paulo