Estamos construyendo una API JSON sobre nuestra aplicación web Ruby on Rails, utilizando JSONAPI :: Resources para exponer puntos finales y Doorkeeper para manejar la autenticación del usuario.
La mayoría de nuestros puntos finales de API se expondrán solo a usuarios autenticados, y Doorkeeper probablemente hará un gran trabajo para hacer cumplir eso. Pero todavía tenemos un par de puntos finales que no serán autenticados: registro, inicio de sesión, confirmación de la cuenta, y tal vez un par de otros.
Me preocupa que dejar que los puntos finales de la API se abran completamente nos expondrá a ataques, por ejemplo, mediante el envío de correo no deseado a nuevas cuentas.
- Tal vez me estoy preocupando más de lo necesario? ¿Las API generalmente dejan este tipo de punto final inseguro y agregan sistemas de prevención como la limitación?
- Si no es así, ¿está firmando (o cifrando) mis solicitudes antes de enviarlas al servidor API el enfoque correcto?
- Y si es así, ¿tiene alguna recomendación o un enfoque preferido para hacerlo?
Intenté utilizar palabras clave de Google como "solicitud de firma de API de Rails" o "solicitud de encriptación de API de Rails", pero no estoy seguro de que los resultados sean pertinentes o cuál sería la recomendada.
Los primeros clientes que hablarán con esta API serán Android y luego las aplicaciones de iOS, y podríamos agregar en las futuras aplicaciones web del lado del cliente (en este momento, nuestra aplicación web es monolítica y no utiliza la API). / p>