Предотвращение атак Flooding/DOS в приложении Java/AMF
Я работаю над бэкэндом Java для веб-игры Flash - клиент и сервер взаимодействуют с помощью Action Message Format (AMF). Несколько недель назад другая команда в нашей компании взломала свой продукт пользователем, который декомпилировал Flash-клиент, и использовала измененную версию, чтобы заполнить бэкэнд ложными запросами. Мы хотим предотвратить подобные атаки в нашей новой игре.
(Подробнее: используемый веб-сервер - Tomcat, клиент AMF - BlazeDS.)
Я хотел бы знать, каков будет лучший способ предотвратить такую атаку. Некоторые идеи у меня были:
конфигурация nginx казалась лучшим местом для обработки ограничения скорости, но я не могу найти никаких ресурсов о том, как nginx взаимодействует с AMF. Запросы AMF отправляются прямо в Tomcat?
большинство запросов включают параметр userId для соответствующего пользователя. Запросы с ограничением скорости, включающие чрезмерно используемые идентификаторы пользователей, могут быть одним из подходов, однако злоумышленник, который просто хочет залить сервер, может легко спамить случайные идентификаторы пользователей.
сделать то же самое, что и выше, но можно использовать IP-адреса вместо идентификаторов пользователей. Однако я не могу сказать, возможно ли получить IP-адрес из запроса AMF.
1 ответ
Ваше Java-приложение должно передать уникальный идентификатор брандмауэру операционной системы хоста и заблокировать этого клиента. С помощью этого действия вы сможете запретить вашему приложению работать над тем, чего оно не должно делать (например, быть брандмауэром).