существуют ли такие способы разработки фронтэнд приложения, чтобы во время его работы в проде, ботам было сложнее определять путь к api endpoint, например отвечающий за login page - это уменьшит число ложных срабатываний
Вадим, почему нет? Шифруешь каким-нибудь aesом url и кидаешь его в js в переменную endpoint допустим, в другую переменную key кидаешь ключ для расшифровки, при запросе на сервер расшифровываешь url и кидаешь туда запрос. Но это не сработает против ботов с эмуляцией. Эмулируется браузер, твой js расшифрует url и сделает запрос, бот получит все url куда были сделаны запросы.
Dr. Bacon, не важно, они с автором нашли друг друга
тут много таких фантазеров бегает, один выковыривает из носа проблемы, а другой, из того же источника - решения.
и совершенно не важно что как только надо будет обратиться к этому "зашифрованному" урл, то он окажется как на ладони
зато можно почувствовать себя крутым специалистом решающим сложные проблемы.
Но бороться можно.
Первое это капча на второй неверный логин и на первую регистрацию.
Второе это UserAgent header это конечно отсечет всех самых тупых, но и то мясо
третье это увеличение времени в 2 раза при каждой неудачной попытке логина
четвертое логирование адресов и добавление их в черный список, возможно с тайм лимитом
Это все относится к публичным апи типа логина или поиска
Два уточнения:
1) третье это увеличение времени в 2 раза при каждой неудачной попытке логина - это реализовано через waf или самим кодом? Или может через api gateway?
2) Все остальные просто посылают если нет токена - что имеется ввиду, кто посылает?
Вадим, все это в коде. Саму концепцию waf я считаю ущербной. Какое то внешнее приложение делает догадки как должно быть используя кучу ресурсов.
1. да в коде вашего api
2. тоже ваше api
Тут еще уточнение на сервере формируйте ключ для клиента, если он первый раз то выводите капчу, если во второй и не передал ключ то в игнор. Смысл в том что в первом запросе вы для анонимного запроса делаете уникальный ключ, а клиент уже им подписывает , если подпись не совпадает то это бот
Владимир Коротенко, а блин, еще текст вопрос поменял, там сначала было "скрывать во время разработки". Короче самое просто и быстрое сделать ограничение на уровне вебсервера, например limit_req_zone у nginx Вадим
Если кто-то захочет написать бота для вашего API, он напишет. Так что советую не париться. Ну или начинать с другого конца, бороться с ботами по факту, использовать механизмы их выявления и блокировки.