Защитите доступ к данным
Проверяйте аутентификацию и права доступа при каждом запросе к защищённым объектам. Секреты нельзя встраивать в публичный клиент как способ скрыть API. Ограничивайте поля и объём ответа необходимыми данными.
Проверяйте вход и стоимость операций
Валидируйте тип, формат, диапазон и размер входных данных на сервере. Устанавливайте верхние границы пагинации, глубины запросов и ресурсоёмких параметров. Rate limiting настраивайте отдельно для разных операций и учитывайте идентификатор клиента вместе с сетевым контекстом.
Наблюдайте за злоупотреблениями
Анализируйте всплески ошибок авторизации, повторные запросы к объектам и необычные последовательности операций. Логируйте минимум необходимых данных, избегайте секретов и персональных данных в журналах, задайте сроки хранения и доступ.
Тестируйте ограничения вместе с легитимными интеграциями и предусмотрите документированный способ их идентификации и поддержки.
Частые вопросы
Достаточно ли скрыть endpoint от браузера?
Нет. Публичный endpoint можно вызывать напрямую. Контроль доступа и проверки выполняются сервером.
Нужно ли ограничивать API по IP?
IP может быть одним из сигналов, но не единственным ключом: адреса меняются, а пользователи и интеграции могут делить один адрес.