Fazer uma simulação para que uma URL só seja acessada pela minha aplicação

4 respostas
R

Pessoal, estou com a seguinte situação:

Tenho um programa rodando em um servidor com uma URL X.

A minha aplicação, que está rodando em outro servidor, precisa fazer, do lado do cliente, uma solicitação a esse programa (esse programa abre uma janela do lado do cliente, portanto, a solicitação tem que ser de uma forma que o programa abra lá), mas não quero disponibilizar a url para o pessoal não poder acessar diretamente. O pessoal só pode acessar pela minha aplicação.

Uma idéia inicial foi gerar uma chave randômica e salvar no banco toda vez que carregar a página… então, quando o cliente acessasse a URL eu verificaria se aquela chave é válida, faria o processamento e invalidaria aquela chave. Mas isso deve ser muito custoso, pois haverá um número considerável de requisições ao mesmo tempo.

Gostaria de saber se vcs não têm uma solução que não precise acessar banco. Talvez usando cookies? seria seguro?

[]'s

4 Respostas

peron

Que tal controle de sessão através de login?

Você faz seu projeto acessar uma url remota através de POST e envia login e senha, e recebe um ID de sessão.

Nas próximas requisições, você manda esse ID, e o seu WebService reconhece a sessão.

NADA de BD, só Sessão.

Espero ter ajudado.

sds

R

Peron, valeu pela tentariva, mas se eu entendi o que vc quis dizer, dessa forma qualquer pessoa poderia criar um formulario html que roda local apontando pra a url (que preciso ter acesso exclusivo da minha aplicação), pegar um ID de session e fazer requisições sem passar pela minha aplicação.

O que preciso fazer é mais ou menos isso:

Tem uma dll que precisa ser carregada no browser. Algo parecido com um applet vai rodar no lado do cliente. Para isso, preciso carregar um objeto por javascript do lado do cliente e chamar uma url para o programa que esta no servidor. Como essa url é chamada por javascript, ela estará disponível do lado do cliente e qualquer malicioso pode pegar essa url e ficar acessando ela fora da segurança da aplicação.

Portanto, o que preciso é bolar uma forma de garantir que essa url, mesmo estando disponível do lado do cliente, só seja acessada pelo meu servidor. Por isso pensei em algo como criar uma chave que apenas meu servidor pode validar, enviar a chave junto com a url para o cliente e sempre que receber a url, verificar se a chave é válida… Além disso, note que essa chave deve ser mudada para cada requisição. Portanto, tb nao pode ter a idéia de apenas um “ID de session”… Preciso de uma chave por solicitação. Senão, uma vez que o cliente descobriu a chave, ele poderá fazer várias solicitações com ela.

edit: essa sua frase é show de bola… me estourei aqui de rir heuhuhueh
“Dizem que, no início, Deus criou o céu e a Terra. Mentira! Na verdade, no início Deus criou Java. Onde achas que ele programou o mundo, oras?”

peron

RafaelVS:
Peron, valeu pela tentariva, mas se eu entendi o que vc quis dizer, dessa forma qualquer pessoa poderia criar um formulario html que roda local apontando pra a url (que preciso ter acesso exclusivo da minha aplicação), pegar um ID de session e fazer requisições sem passar pela minha aplicação.

Veja, para um usuário mal intencionado tiver acesso à seu webservice, ele precisaria logar-se no teu servidor antes, porque segundo minha sugestão, vc teria duas requisições, a primeira seria somente para efetuar um login com senha, e no momento em que esse fosse validado, retornaria um ID de sessão valido somente para aquele usuário/ip, que, se não interagir em um tempo que vc determinar, a sessão morre, e o id fica inútil.

Somente após esse “LOGIN” seu usuario iria conseguir ver essa sua página restrita.

é como no fórum, eu so consigo ver Minhas mensagens e Meu perfil após estar logado (em uma Sessão) e não preciso ficar me autenticando o tempo todo.

Eu peguei da desciclopédia… também achei muito hilário.

espero ter ajudado, qualquer coisa, estamos aí!

sds

R

Peron, acho que assim funciona mesmo. Guardando a chave na session é o equivalente a guardar a chave no banco… Com isso, já resolvo o problema da URL ser acessada apenas através da minha aplicaçaõ… agora vê só… eu não posso deixar que o cliente conheça essa URL. Então, do que estou precisando para fechar a solução? Preciso de uma forma de fazer, diretamente do meu servlet, uma solicitação http pra uma aplicação rodando em outro servidor (através da tal URL).

  • Tentei usar o RequestDispatcher mas, pelo que conclui, só é possível encaminhar para algum componente dentro do próprio contexto.
  • Tentei usar o response.sendRedirect. Esse funcionou… mas, pelo que conheço dele, o que acontece é que ele enviar uma mensagem (com a URL a ser acessada) para o browser pedindo para que o mesmo faça a solicitação. Então, vejo que talvez a URL fique vulnerável nesse ponto. Teria alguma forma de o próprio servidor acessar a url diretamente? sem passar a url para o cliente?

edit: Pessoal, o foco dessa thread foi redirecionado para http://www.guj.com.br/posts/list/67860.java#356601

Criado 27 de agosto de 2007
Ultima resposta 27 de ago. de 2007
Respostas 4
Participantes 2