1
resposta

Dúvida com Vraptor e ataques simples de negação de Serviço

Olá a todos, no meu caso específico estou utilizando o Vraptor, mas acredito que o problema ocorra em qualquer framework Java que tenha suporte ao http get: Jsf, Spring, Jax-Rs, etc.. e em outras linguagens também.

Estou desenvolvendo um portal, nesta aplicação tenho uma url pública acessada por get: @Get("/fornecedor/exibe/{id}"), ou seja se eu acessarmos a url /fornecedor/exibe/56 eu carrego uma página onde trago todos os detalhes do fornecedor do banco de dados. O problema ocorre se algum usuário mal intencionado ficar pressionando F5 rapidamente e indefinidamente, como a requisição é Get, a cada F5 é disparada uma requisição ao servidor e novamente são disparados vários selects ao banco de dados, situação que pode fazer fazer facilmente o servidor de aplicações ou o banco de dados cair. Como se prevenir ou pelo menos minimizar este tipo de problema? tem como ? filtros? cache? como vocês lidam com esse tipo de problema?

1 resposta

Oi Ricardo, isso depende muito do seu cenário.

A menos que você esteja rodando sua aplicação em um banco de dados e uma máquina bem lentos, é bem difícil que um usuário derrube seu servidor apenas dando F5 na página, ele precisaria de uns bots e vários acessos simultâneos pra conseguir começar a fazer algum estrago.

Para se prevenir disso existem várias estratégias, você pode por exemplo cachear essa informação, ou limitar o número de pageviews de um usuário em determinado tempo.

Mas, acredito que você não deva se preocupar com isso nesse momento, preocupe-se em resolver os problemas atuais e se algum dia essa aplicação for pra produção e você estiver com esse problema, começa a pensar em um jeito de solucionar