Я постараюсь объяснить все, что могу, но для наиболее близкого контекста, который я могу придумать, представьте, что я создаю аналитическую платформу, которая позволяет платным пользователям регистрироваться, размещать скрипт отслеживания на своем веб-сайте и отслеживать данные посетителей их веб-сайта. Это означало бы, что любой, кто посещает их сайт, должен был бы иметь возможность сделать запрос API (даже без их ведома — это делается с помощью скрипта отслеживания) для отправки аналитических данных в базу данных. Например. пользователи могут установить скрипт в голове следующим образом:
<script data-domain = "somedomain.com" src = "path/to/tracking/script.js?id=SOMETHING" defer></script>
Я также не хотел бы, чтобы пользователи когда-либо обновляли этот скрипт.
Мой сценарий в чем-то похож, но, резюмируя, я беспокоюсь, что любой (например, хакер) сможет вставить в базу данных кучу ненужных данных (поскольку они могут делать запросы API, не требующие аутентификации).
Что можно сделать, чтобы предотвратить это, но не запретить скрипту отслеживать всех пользователей? Я думал в этом направлении:
Но, по-видимому, аутентификация запросов не вариант, поскольку это не позволит отслеживать всех остальных.
Я могу ошибаться в своих предположениях здесь, но любые идеи будут очень признательны. Это просто странно, так как любой может вставить в базу данных кучу ненужных данных. Это может быть не зарегистрированный пользователь, который злоупотребляет API, а случайный хакер, посещающий их сайт.
Дросселирование скорости IP-адреса для ограничения количества запросов, которые кто-то может сделать
Но, очевидно, вы можете стать немного более сложным, чем простое дросселирование скорости IP - вы можете определить аномальные паттерны в запросах (используя все источники, скорость/паттерн запросов и содержание самих запросов) и затем отбросить эти запросы тем или иным способом.
Обратите внимание, что в некоторых случаях может быть выгодно позволить злоумышленникам думать, что они пишут в вашу базу данных, но на самом деле вы просто отбрасываете данные (или храните их в другом месте, чтобы улучшить сопоставление шаблонов для защиты от будущих атак).