Peut-on mettre en cache et sécuriser une API REST avec Cloudflare?

je conçois une API RESTful qui est destiné à être consommé par une application d'une seule page et une application mobile native. Certains appels de cette API renvoient des résultats publics qui peuvent être mis en cache pendant un certain temps. De plus, il y a un besoin de protection de taux pour protéger L'API contre les utilisateurs non autorisés (araignées)

puis-je utiliser Cloudflare pour mettre en œuvre la mise en cache et la protection de débit limité / DDOS pour mon API RESTful?

mise en Cache: Cloudflare prise en charge des Headers de contrôle de cache HTTP ainsi L'API peut décider pour chaque entité demandée via GET si elle est publique et combien de temps elle peut être mise en cache.

  • Toutefois, c'est pas clair si l'en-tête cache control est aussi passé en aval au client, donc va aussi déclencher le navigateur pour mettre en cache la réponse? Cela n'est peut-être pas souhaitable, car cela pourrait rendre le dépannage plus difficile
  • Akamai a un en-tête Edge-Control pour s'assurer que le contenu est mis en cache en CDN mais pas le navigateur. peut-on faire quelque chose de semblable avec Cloudflare?

protection DDOS: Cloudflare support a un article recommandant que la protection DDOS soit désactivée pour les IPA d'arrière-plan, mais cela ne s'applique pas à mon cas d'utilisation où chaque client est censé faire quelques requêtes à l'API. La protection DDOS native correspond en fait à mes exigences de protection de L'API contre les bots.

  • j'ai besoin de savoir comment je peux par programmation à détecter quand Cloudflare propose un Captcha/je suis sous attaque etc. page cela permettrait alors à L'application SPA / mobile de réagir intelligemment, et de rediriger l'utilisateur vers une vue web où elle peut démontrer son "hummanness".

  • à partir de la documentation Cloudflare, il n'est pas évident de savoir quel code de statut HTTP est envoyé lorsqu'une contestation DDOS est présentée. Un open-source cloudscraper pour contourner la protection DDoS Cloudflare semble indiquer que les pages Captcha et challenge sont livrées avec le statut HTTP 200. y a-t-il un meilleur moyen que d'analyser le corps de la demande pour savoir si la protection DDOS est entrée en jeu?

  • Cloudflare apparemment, utilise des cookies pour enregistrer qui a résolu le Captcha avec succès. Cela crée évidemment une certaine complexité supplémentaire avec des applications natives. Est il y a une bonne façon de transférer les cookies de session Cloudflare de nouveau à une application native après le défi a été résolu?

il s'agit probablement d'un cas d'utilisation avancé de Cloudflare - mais je pense que c'est prometteur et je serais heureux d'entendre si quelqu'un a de l'expérience avec quelque chose comme ça (sur Cloudflare ou un autre CDN).

30
demandé sur Community 2015-04-10 22:10:05

2 réponses

Oui CloudFlare peut vous aider avec les protections DDOS et non il n'implémente pas la mise en cache et la limitation de vitesse pour votre API. Vous devez les mettre en œuvre vous-même ou utiliser un cadre qui le fait.

vous pouvez utiliser CloudFlare pour protéger votre terminal API en l'utilisant comme un proxy. CloudFlare protège l'intégralité du bit URL que vous pouvez utiliser les règles de page pour modifier les paramètres de votre terminal api.

Example: https://api.example.com/*
  • réduire la sécurité de cette règle à faible ou moyenne de sorte que pas pour montrer un captcha.
  • les API ne sont pas destinées à montrer captcha que vous les protégez avec des autorisations et des codes d'accès.
  • vous pouvez implémenter des en-têtes HTTP stricts de sécurité de Transport et de contrôle d'accès sur vos en-têtes.
  • fournisseurs D'hébergement Cloud (E. G DigitalOcean,Vultr, etc..) bénéficient d'une protection DDoS gratuite ou payée. Vous pouvez vous abonner sur ce seul public face à VM. Ce sera un grand plus parce que maintenant vous avez Double DDOS protection.

pour les API de cache

Create a page rule like https://api.example.com/*.json
  • définir le niveau de mise en cache de cette règle de manière à ce que CloudFlare la mette en cache sur ses serveurs pour une durée spécifique.

il y a tellement d'autres façons de protéger les IPA. Espère que cette réponse a été utile?

2
répondu Sojimaxi 2016-05-17 16:00:28

Cloudflare a publié une liste des meilleures pratiques pour l'utiliser avec les Api.

TL; DR, ils recommandent de définir une règle de page qui corrige toutes les requêtes API et d'y mettre les paramètres suivants:

  1. Niveau De Cache: Bypass
  2. Toujours En Ligne:
  3. Pare-Feu De L'Application Web:
  4. Niveau De Sécurité: tout sauf "je suis sous attaque"
  5. Vérification De L'Intégrité Du Navigateur:
2
répondu hoffm 2017-10-25 13:39:12