Verificación del Lado del Servidor
Siempre verifique el Nonce de SilentShield en su servidor. Las verificaciones solo del lado del cliente pueden ser evadidas por bots.
¿Por Qué del Lado del Servidor?
El Widget se ejecuta en el navegador e inyecta un Nonce en los formularios. Un bot podría omitir el Widget y enviar el formulario directamente. La verificación del lado del servidor asegura que el Nonce fue emitido y verificado legítimamente por SilentShield.
Endpoint de la API
- Method
POST- URL
https://api.silentshield.io/api/v1/captcha/verify-nonce- Headers
- X-Api-Key: YOUR_API_KEY Content-Type: application/json
- Body
- { "nonce": "the-nonce-from-the-form" }
Formato de Respuesta
{
"ok": true,
"verdict": "human",
"confidence": 0.92,
"requested_nonce": "..."
}human- human — Es muy probable que el usuario sea humano. Procese el formulario.
suspicious- suspicious — el servidor lo rechazó (HTTP 403, `ok: false`). El veredicto indica el motivo, no la decisión: esa ya la tomó el umbral de su cuenta.
bot- bot — Alta confianza de que es un bot. Rechace el formulario.
Lógica Recomendada
El servidor ya ha aplicado el umbral de su cuenta: un rechazo llega como HTTP 403 con `ok: false`. Compruebe por tanto si hay paso, no si hay `bot`: de lo contrario deja pasar todo rechazo emitido como `suspicious` y toda respuesta sin veredicto (clave no válida, cuota agotada).
if not ok or verdict != "human":
rechazar el formulario (403)
else:
procesar el formulario con normalidadFormularios enviados con AJAX
El widget notifica un envío cuando el formulario se envía con un submit normal. También notifica las solicitudes realizadas con XMLHttpRequest, incluido jQuery.ajax, siempre que el cuerpo de la solicitud contenga el campo behavior_nonce: retiene la solicitud un momento, notifica los datos de escritura y de ratón y envía la solicitud en cuanto llega el veredicto, como máximo a los 15 segundos. Por eso, serialice el formulario completo, con los campos ocultos. Su comprobación en el servidor no cambia.
No cubiertas: las solicitudes realizadas con fetch() y las solicitudes síncronas. Para ellas el servidor no recibe datos de escritura ni de ratón y /v1/verify responde suspicious.
Manejo de Errores
Si la API de SilentShield no es accesible (tiempo de espera agotado, error 5xx), decida su estrategia:
- Fail Open
- Fail open — Aceptar el formulario (mejor experiencia de usuario, menos seguro)
- Fail Closed
- Fail closed — Rechazar el formulario (más seguro, peor experiencia de usuario)
Para la mayoría de las aplicaciones, recomendamos fail open con registro de eventos. Los formularios críticos (inicio de sesión, pagos) deben usar fail closed.