SilentShield
← Volver al blog
ReleaseAJAXOpenCart

SilentShield 2.6: ahora se comprueban los formularios enviados con un clic y AJAX

Marc Wagner·8 de octubre de 2026·3 min de lectura

SilentShield 2.6 cierra una laguna que le costó a una tienda los registros en su checkout: los formularios que se envían con un clic en un botón y AJAX en lugar de un submit normal no se nos notificaban. Este artículo explica qué ocurrió, qué cambia y qué debe hacer usted. La lista completa está en el changelog.

Qué falló

El widget mide la escritura y el movimiento del ratón y notifica el resultado cuando un visitante envía un formulario. Para ello escuchaba el evento submit del navegador. Algunas tiendas nunca activan ese evento. El checkout de OpenCart 3, por ejemplo, carga el paso de registro por AJAX y lo envía con un botón simple y jQuery.ajax.

El resultado: su servidor consultaba /v1/verify sobre un visitante del que solo habíamos recibido el primer evento de página. Sin datos de escritura ni de ratón, el veredicto era «suspicious» y el registro fallaba para una persona real. El formulario estaba protegido, pero la protección no podía ver al visitante.

Qué cambia

Con la versión 2.6 el widget también reconoce este tipo de envío. Observa la solicitud que lleva el behavior_nonce. Si esa solicitud sale de la página sin un evento submit y el formulario aún no se ha comprobado, el widget la retiene un momento, notifica el envío con los datos de escritura y de ratón recopilados y envía la solicitud en cuanto llega el veredicto. Si no llega respuesta en 15 segundos, la solicitud se envía de todos modos y su servidor decide, como hasta ahora.

Todo lo demás sigue igual: los formularios con submit normal, las solicitudes sin nonce y los envíos de página simples no se tocan.

Cómo lo probamos

Reconstruimos el checkout de OpenCart en nuestro entorno de pruebas local con jQuery real y dejamos que un servidor de cliente simulado llamara a /v1/verify. Con el interruptor desactivado, el formulario con clic y AJAX fue rechazado (HTTP 403, «suspicious», motivos NO_TYPING_PAUSES y NO_MOUSE_MOVEMENT). Con el interruptor activado, el mismo visitante fue aceptado (HTTP 200, «human»). Un formulario con submit normal, un envío de página simple y una solicitud sin nonce se comportaron igual con el interruptor activado y desactivado.

Qué debe saber

  • Cubre las solicitudes realizadas con XMLHttpRequest, lo que incluye jQuery.ajax. Los formularios enviados con fetch() todavía no están cubiertos, salvo el checkout en bloques de WooCommerce, que tiene su propio tratamiento.
  • Su comprobación en el servidor no cambia. Siga llamando a /v1/verify con el nonce.

Guía de integración

¿Listo para deshacerse del CAPTCHA?

Proteja sus formularios — de forma invisible. Sin tarjeta de crédito.