clowdflare - ¿Se puede caché y asegurar una API REST con Cloudflare?
cloudflare signup (2)
Estoy diseñando una API RESTful que está destinada a ser consumida por una aplicación de una sola página y una aplicación móvil nativa. Algunas llamadas de esta API devuelven resultados públicos que se pueden almacenar en caché durante un tiempo determinado. Además, existe la necesidad de protección de velocidad para proteger la API contra usuarios no autorizados (arañas)
¿Puedo usar Cloudflare para implementar el almacenamiento en caché y la protección contra la limitación de velocidad / DDOS para mi API RESTful?
Almacenamiento en caché: Cloudflare admite encabezados de control de caché HTTP para que la API pueda decidir para cada entidad solicitada a través de GET si es pública y cuánto tiempo se puede almacenar en caché.
- Sin embargo, no está claro si el encabezado de control de caché también se transfiere al cliente, por lo que también activará el navegador para almacenar en caché la respuesta. Esto puede no ser deseable, ya que podría dificultar la solución de problemas
- Akamai tiene un encabezado Edge-Control para garantizar que el contenido esté en caché en CDN pero no en el navegador. ¿Se puede hacer algo similar con Cloudflare?
Protección DDOS: el soporte Cloudflare tiene un artículo que recomienda que la protección DDOS se deshabilite para las API de backend , pero esto no se aplica a mi caso de uso, donde se supone que cada cliente debe hacer pocas solicitudes a la API. La protección DDOS nativa realmente se ajusta a mis requisitos para proteger la API contra bots.
Necesito saber cómo puedo detectar mediante programación cuando Cloudflare sirve una página de Captcha / Estoy bajo ataque, etc. Esto permitiría que la aplicación móvil / SPA reaccione de forma inteligente y redirija al usuario a una vista web donde pueda demostrarlo ". Hummanness ".
De la documentación de Cloudflare, no es obvio qué código de estado HTTP se envía cuando se presenta un desafío DDOS. Una cloudscraper código cloudscraper para eludir la protección DDOS de Cloudflare parece indicar que las páginas Captcha y de desafío se entregan con el estado HTTP 200. ¿Hay alguna manera mejor que analizar el cuerpo de la solicitud para averiguar si se activó la protección DDOS?
Cloudflare aparentemente usa cookies para registrar quién resolvió el Captcha exitosamente. Obviamente, esto crea cierta complejidad adicional con las aplicaciones nativas. ¿Hay una buena manera de transferir las cookies de la sesión de Cloudflare a una aplicación nativa después de que se haya resuelto el desafío?
Probablemente esto sea algo así como un caso de uso avanzado de Cloudflare, pero creo que es prometedor y estaría feliz de saber si alguien tiene experiencia con algo como esto (en Cloudflare u otro CDN).
Cloudflare ha publicado una lista de mejores prácticas para usarla con API.
TL; DR, recomiendan establecer una regla de página que revise todas las solicitudes de la API y establezca las siguientes configuraciones en ella:
- Nivel de caché: puente
- Siempre en línea: OFF
- Web Application Firewall: desactivado
- Nivel de seguridad: cualquier cosa menos "estoy bajo ataque"
- Verificación de integridad del navegador: DESACTIVADO
Sí, CloudFlare puede ayudar con las protecciones DDOS y no, no implementa el almacenamiento en caché y la limitación de velocidad para su API. Debes implementarlos tú mismo o utilizar un marco que sí lo haga.
Puede usar CloudFlare para proteger su punto final API utilizándolo como un proxy. CloudFlare protege todo el bit de URL; puede usar las reglas de página para ajustar la configuración a su punto final de API.
Example: https://api.example.com/*
- Reduzca la seguridad de esta regla a baja o media para no mostrar un captcha.
- Las API no están destinadas a mostrar captcha, las proteges con autorizaciones y códigos de acceso.
- puede implementar HTTP Strict Transport Security y Access-Control Headers en sus encabezados.
- Los proveedores de Cloud Hosting (por ejemplo, DigitalOcean, Vultr, etc.) tienen protección DDoS gratuita o de pago. Puede suscribirse en esa VM pública. Esto será una gran ventaja porque ahora tiene doble protección DDOS.
Para las API de caché
Create a page rule like https://api.example.com/*.json
- Establezca el nivel de almacenamiento en caché para esa regla de manera que CloudFlare lo almacene en caché en sus servidores durante un tiempo específico.
Hay muchas otras maneras en que puedes proteger las API. Espera que esta respuesta haya sido de ayuda?