Estoy trabajando en un proyecto web que permite a una persona enviar un formulario de solicitud a mi API. Cada visitante puede enviar una solicitud a través de ese formulario sin iniciar sesión.
Actualmente, la API genera un token cuando la página se abre por primera vez, y el token se envía de vuelta con el formulario de solicitud POST. Pero ese token puede usarse para enviar otra solicitud POST. Peor aún si un atacante conoce el token, puede enviar una solicitud POST con algún script sin visitar el sitio web más.
Actualmente invalido el token después de un período de tiempo. Pero en ese tiempo, el atacante puede enviar varias solicitudes con un script ajax. Tengo la intención de invalidar el token después de cada solicitud POST, pero eso no impide que el atacante envíe varias solicitudes POST porque también pueden solicitar un token nuevo antes de cada solicitud POST.
¿Hay alguna forma de evitar que un atacante envíe múltiples solicitudes desde un script malicioso sin utilizar el formulario en mi sitio web?