I have a web app and I would like to prevent DOS attacks by blocking an IP address if it make many request in a short period of time.
For example, if the same IP address makes 100 request in a second, I can assume that it’s some kind of attack and I would like to block this IP.
However, making this check in the application layer seems too expensive – what is the optimal way to make this check?
Should I make this kind of check at my:
- firewall
- router
- apache config
- someplace else entirely …
Some apps for generating APIs in django implement some methods for limiting the amount of request per second.
For example django-piston use throttling method to do that.
django-piston throttling
Thats an easy way to solve the problem.