Как наилучшим образом защитить общедоступный API от нежелательных запросов

Как наилучшим образом защитить общедоступный API от нежелательных запросов
Как наилучшим образом защитить общедоступный API от нежелательных запросов - falaqkun @ Unsplash

Я постараюсь объяснить все, что могу, но для наиболее близкого контекста, который я могу придумать, представьте, что я создаю аналитическую платформу, которая позволяет платным пользователям регистрироваться, размещать скрипт отслеживания на своем веб-сайте и отслеживать данные посетителей их веб-сайта. Это означало бы, что любой, кто посещает их сайт, должен был бы иметь возможность сделать запрос API (даже без их ведома — это делается с помощью скрипта отслеживания) для отправки аналитических данных в базу данных. Например. пользователи могут установить скрипт в голове следующим образом:

<script data-domain = "somedomain.com" src = "path/to/tracking/script.js?id=SOMETHING" defer></script>

Я также не хотел бы, чтобы пользователи когда-либо обновляли этот скрипт.

Мой сценарий в чем-то похож, но, резюмируя, я беспокоюсь, что любой (например, хакер) сможет вставить в базу данных кучу ненужных данных (поскольку они могут делать запросы API, не требующие аутентификации).

Что можно сделать, чтобы предотвратить это, но не запретить скрипту отслеживать всех пользователей? Я думал в этом направлении:

  1. Регулирование скорости IP, чтобы ограничить нет. запросов, которые кто-то может сделать
  2. Токены аутентификации отправляют заголовки запросов (но срок их действия истекает, если только они не могут быть автоматически обновлены каким-либо образом? Из другого скрипта? Но не может ли хакер также получить доступ к этому в любом случае?)
  3. Убедитесь, что конечная точка API, используемая скриптом отслеживания, предназначена только для приема запросов от скрипта отслеживания, а не напрямую из других источников (например, как? через заголовки CORS?).

Но, по-видимому, аутентификация запросов не вариант, поскольку это не позволит отслеживать всех остальных.

Я могу ошибаться в своих предположениях здесь, но любые идеи будут очень признательны. Это просто странно, так как любой может вставить в базу данных кучу ненужных данных. Это может быть не зарегистрированный пользователь, который злоупотребляет API, а случайный хакер, посещающий их сайт.

Ваш ответ в основном заключается в следующем

Дросселирование скорости IP-адреса для ограничения количества запросов, которые кто-то может сделать

Но, очевидно, вы можете стать немного более сложным, чем простое дросселирование скорости IP - вы можете определить аномальные паттерны в запросах (используя все источники, скорость/паттерн запросов и содержание самих запросов) и затем отбросить эти запросы тем или иным способом.

Обратите внимание, что в некоторых случаях может быть выгодно позволить злоумышленникам думать, что они пишут в вашу базу данных, но на самом деле вы просто отбрасываете данные (или храните их в другом месте, чтобы улучшить сопоставление шаблонов для защиты от будущих атак).


LetsCodeIt, 2 апреля 2023 г., 15:55