Estoy desarrollando una aplicación de una sola página con un comportamiento similar al de Google Maps y quiero evitar el spam lo más posible.
Los usuarios pueden registrarse en mi sitio web para obtener acceso a una CLAVE API. Luego, en su sitio web, pueden implementar esta aplicación de página única como esta:
<script src="https://www.mywebsite.com/single_page_app.js?key=THEIR_API_KEY"></script>
(Más algunas líneas de javascript para enlazar la aplicación a un <div>
pero eso no es relevante)
Esta aplicación de una sola página será utilizada por los usuarios finales para completar información (opciones, fecha, correo electrónico, nombres ...) a través de un formulario de varios pasos. Cada usuario final tiene una sesión (las cookies se utilizan con la solicitud de CORS) y se envía un token a la aplicación para evitar CSRF. Al final de cada paso, los datos recopilados se envían a mi servidor con el token y se guardan en mi base de datos.
¿Cómo puedo evaluar si los datos enviados a mi servidor son spam?
Tengo algunas ideas (obvias) que son:
- Valide los datos enviados
- Analice el tiempo entre los pasos y el tiempo total empleado
- Cuente el número de solicitudes por IP
- Busque la solicitud con los mismos datos exactos (hash md5)
- Busque el encabezado de origen y referencia (CSRF, en realidad no es spam)
¿Hay algo más que pueda hacer?
Además, algunas verificaciones (como el número de solicitudes por IP o los datos duplicados) pueden consumir tiempo, ya que tengo que revisar mi base de datos.
¿Deben realizarse estas verificaciones mediante un proceso CRON después de insertarlo en la base de datos o sobre la marcha antes de insertarlos en mi base de datos?
¿Qué debo hacer con los datos de SPAM?
Los datos de SPAM pueden ser útiles para detectar futuros spam, ¿debo eliminarlos o guardarlos en algún lugar? ¿Por cuánto tiempo?