Ir al contenido principal

Tras mitigar un ataque de bots, algunas funciones de mi PrestaShop devuelven error 403: búsqueda, cookies o login social

Escrito por Javier Galeote

Contexto

Cuando una tienda PrestaShop sufre tráfico abusivo de bots (scrapers, ataques a URLs de facetas, etc.), se aplican reglas de filtrado en el servidor o en el WAF para mitigarlo. Estas reglas son deliberadamente estrictas y, en ocasiones, pueden bloquear también peticiones AJAX legítimas de la propia tienda.

Síntomas típicos

  • La búsqueda interna o la búsqueda por facetas "se queda pensando" y no devuelve resultados.

  • El botón de aceptar cookies no responde.

  • El botón de iniciar sesión con Google u otro login social desaparece o no funciona.

  • En la consola del navegador (F12 → Red) aparecen peticiones a rutas del tipo /module/.../ajax o /modules/... que devuelven error 403.

Una pista clara: la misma función suele seguir operativa en el entorno de pruebas o staging (donde no se aplican las reglas), pero falla en producción.

Qué hacer

  1. Abre la consola del navegador y localiza la URL exacta que devuelve 403 al usar la función afectada.

  2. Abre un ticket indicando esa URL, la función que falla y cómo reproducir el problema paso a paso.

  3. Nuestro equipo identifica la regla que está bloqueando ese endpoint y la ajusta o añade una exclusión para esa ruta, manteniendo la protección contra los bots.

Cómo reducir estos falsos positivos

  • Mantén los módulos actualizados, especialmente los de búsqueda: por ejemplo, el módulo de búsqueda por facetas (ps_facetedsearch) debe estar en una versión no vulnerable, ya que las versiones antiguas son objetivo directo de los bots.

  • En tiendas con tráfico de bots recurrente, la solución más robusta es filtrar el tráfico con Cloudflare y reglas WAF afinadas: usar challenge en lugar de bloqueo directo, no bloquear los bots verificados (Google, Bing), aplicar límites suaves a búsqueda y facetas, y mantener en lista blanca los endpoints críticos como la pasarela de pago.

¿Ha quedado contestada tu pregunta?