Подтвердить что ты не робот

Можно ли кэшировать и защищать REST API с помощью Cloudflare?

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

Могу ли я использовать Cloudflare для реализации кеширования и ограничения скорости/защиты DDOS для моего RESTful API?

Кэширование: Cloudflare поддерживает заголовки управления кешем HTTP, поэтому API может решить для каждого объекта, запрошенного через GET, является ли он общедоступным и как долго он может быть кэшируются.

  • Тем не менее, неясно, передается ли заголовок управления кэшем ниже по течению клиенту, так же будет заставлять браузер кэшировать ответ? Это может быть нежелательно, поскольку это может затруднить устранение неполадок.
  • Akamai имеет заголовок Edge-Control, чтобы обеспечить кеширование содержимого в CDN, но не в браузере. Можно ли сделать что-то подобное с Cloudflare?

Защита DDOS: поддержка Cloudflare имеет статью рекомендацию об отключении защиты DDOS для интерфейсных API, но это не относится к моему варианту использования, где каждый клиент должен сделать несколько запросов к API. Нативная защита DDOS действительно соответствует моим требованиям по защите API от ботов.

  • Мне нужно знать, как я могу программно обнаруживать, когда Cloudflare обслуживает Captcha/I под атакой и т.д. page. Тогда это позволит SPA/мобильному приложению реагировать разумно и перенаправлять пользователя на веб-представление, где она может продемонстрировать свою "худману".

  • Из документации Cloudflare не очевидно, какой код статуса HTTP отправляется при представлении DDOS-запроса. Открытый источник cloudscraper, чтобы обойти защиту Cloudsoft от DDOS, указывает, что Captcha и страницы запроса поставляются с HTTP-статусом 200. Is есть ли лучший способ, чем разобрать тело запроса, чтобы узнать, удалили ли защиту от DDOS?

  • Cloudflare явно использует файлы cookie для записи, кто успешно решил Captcha. Это, очевидно, создает дополнительную сложность с родными приложениями. Есть ли способ передать куки сессии Cloudflare обратно в родное приложение после решения проблемы?

Возможно, это что-то вроде расширенного варианта использования Cloudflare - но я думаю, что это многообещающе и будет рад услышать, есть ли у кого-нибудь опыт с чем-то подобным (на Cloudflare или другом CDN).

4b9b3361

Ответ 1

Да CloudFlare может помочь с защитой DDOS и Нет, он не реализует кеширование и ограничение скорости для вашего API. Вы должны реализовать их самостоятельно или использовать фреймворк, который делает.

Вы можете использовать CloudFlare для защиты конечной точки API, используя ее как прокси. CloudFlare защищает весь бит URL, чтобы использовать правила страницы, чтобы настроить настройки на конечную точку api.

Example: https://api.example.com/*
  • Снизить уровень безопасности для этого правила между низким или средним, чтобы не показывать капчу.
  • API не предназначены для того, чтобы показывать, что вы защищаете их с помощью разрешений и кодов доступа.
  • вы можете реализовать заголовки HTTP Strict Transport Security и Access-Control Headers на своих заголовках.
  • Поставщики облачного хостинга (например, DigitalOcean, Vultr и т.д.) имеют бесплатную или платную защиту DDoS. Вы можете подписаться на него только на эту виртуальную виртуальную машину. Это будет большой плюс, потому что теперь у вас есть двойная защита DDOS.

Для API кеширования

Create a page rule like https://api.example.com/*.json
  • Установите уровень кэширования для этого правила, так что CloudFlare кэширует его на своих серверах в течение определенной продолжительности.

Есть так много других способов защитить API. Надеется, что этот ответ помог?

Ответ 2

Cloudflare опубликовала список лучших практик для использования с API.

TL; DR, они рекомендуют устанавливать правило страницы, которое исправляет все запросы API и помещает в него следующие настройки:

  • Уровень кэша: Обход
  • Всегда в сети: ВЫКЛ
  • Брандмауэр веб-приложений: ВЫКЛ
  • Уровень безопасности: Все, кроме "Я под атакой"
  • Проверка целостности браузера: ВЫКЛ