Cómo proteger tu API: guía de inicio rápido
¿Por qué es necesario?
CrowdHandler funciona redirigiendo a los usuarios finales que intentan acceder a una página web o a la pantalla de una aplicación protegida a una sala de espera. Si los puntos finales de la API que controlan la experiencia del front-end son detectables —por ejemplo, si se invocan desde el lado del cliente—, los usuarios con conocimientos técnicos, los revendedores y/o los bots podrían intentar eludir por completo el front-end para obtener lo que desean directamente a través de tus puntos finales de la API.
¿Debería preocuparme?
Aunque no es definitivo, deberías plantearte proteger los puntos finales de tu API si se cumple uno o más de los siguientes criterios:
- Los puntos finales de tu API transaccional son detectables.
- Vendes productos muy demandados, por lo que es probable que la demanda supere a la oferta.
- Tu base de usuarios está muy familiarizada con la tecnología.
- Se sabe que tus productos son objeto de interés por parte de los revendedores.
Pasar a la acción
Escenario 1: el punto final de la API utiliza el mismo dominio que el sitio que estás protegiendo.
Ejemplo
Dominio protegido - https://tickets.example.com
Punto de acceso de la API: https://tickets.example.com/v1/api
Requis n.
Ya deberías haber integrado tu sitio web con CrowdHandler utilizando una de nuestras opciones de integración mediante CDN o del lado del servidor.
de protección de salas de CrowdHandler#
Todas las URL
No es necesario realizar ninguna otra acción
URL que coinciden con expresiones regulares
- Las páginas en las que los usuarios finales añaden el producto más solicitado al carrito deben estar protegidas.
- La ruta de la API que permite añadir el producto solicitado al carrito debe estar protegida.

Las rutas de mi API son genéricas
Modifica las rutas URL de tu API para que incluyan el ID del producto o el «slug» como parámetros de la cadena de consulta.
https://tickets.example.com/v1/api/basket -> https://tickets.example.com/v1/api/basket?id=64398
Esto dará lugar a emparejamientos de salas en CrowdHandler.
Prevenir la suplantación de identidad
En tu API, comprueba que el ID del producto o el slug incluido en la URL de la API coincida con el ID del producto o el slug de la carga útil. Sin esta capa adicional de protección, el ID del producto o el slug de la cadena de consulta podría modificarse para eludir la configuración de la sala de CrowdHandler.
Escenario 2: el punto final de la API utiliza un dominio distinto al del sitio que estás protegiendo.
Ejemplo
Dominio protegido - https://tickets.example.com
Punto de acceso de la API: https://datasource.com/v1/api
de la sala de CrowdHandler#
- Configura tus salas de CrowdHandler para proteger el dominio del sitio web (https://tickets.example.com), NO el dominio de la API.
- Las páginas en las que los usuarios finales añaden el producto más solicitado al carrito deben estar protegidas.
- La configuración de la sala debe coincidir únicamente con las URL de tu dominio protegido.
para la implementación#
Modificar la carga útil de las solicitudes de la API
Añade dos campos adicionales a la carga útil de la ruta de la API «Añadir al carrito». Clave: sourceURL Valor: location.href (la URL de la página protegida desde la que se realiza la llamada a la API) Clave: chToken Valor: token de CrowdHandler (obtenido de la cookie o del almacenamiento local, según el tipo de integración).
Valida la solicitud en el lado del servidor.
const urlParts = new URL(params.sourceURL);
const token = params.chToken;
const crowdhandler = require('crowdhandler-sdk');
const mockRequest = {
getHost: () => urlParts.host,
getPath: () => urlParts.pathname,
getCookies: () => `crowdhandler=${token}`
};
const { gatekeeper } = crowdhandler.init({
publicKey: 'your-public-key',
request: mockRequest,
response: {}, // Empty object is fine for validation only
});
const result = await gatekeeper.validateRequest();
// ✅ This works!
// result.promoted = true/false
// Reject if false ❌
// result.error = { message, statusCode, code } (if error occurred)