Proteggere la propria API - Guida rapida
Perché è necessario?
CrowdHandler funziona reindirizzando gli utenti finali che tentano di accedere a una pagina web protetta o alla schermata di un'applicazione verso una "sala d'attesa". Se gli endpoint API che gestiscono l'esperienza front-end sono individuabili, ad esempio se vengono chiamati lato client, gli utenti esperti di tecnologia, gli scalper e/o i bot potrebbero tentare di aggirare completamente il front-end per ottenere ciò che desiderano direttamente tramite i vostri endpoint API.
Dovrei preoccuparmi?
Sebbene non sia un criterio definitivo, è opportuno valutare la possibilità di proteggere gli endpoint delle API qualora sia soddisfatto uno o più dei seguenti criteri:
- Gli endpoint delle tue API transazionali sono individuabili.
- Stai vendendo prodotti molto richiesti, per i quali la domanda rischia di superare l'offerta.
- La vostra base di utenti è esperta di tecnologia.
- I vostri prodotti sono noti per essere oggetto di speculazione da parte dei rivenditori.
Passare all’azione
Scenario 1 - L'endpoint API utilizza lo stesso dominio del sito che si sta proteggendo.
Esempio
Dominio protetto - https://tickets.example.com
Endpoint API - https://tickets.example.com/v1/api
n
Dovresti aver già integrato il tuo sito con CrowdHandler utilizzando una delle nostre opzioni di integrazione tramite CDN o lato server.
di protezione della sala in CrowdHandler#
Tutti gli URL
Non è necessario intraprendere ulteriori azioni
URL corrispondenti alle espressioni regolari
- Le pagine in cui gli utenti finali aggiungono il prodotto più richiesto al carrello devono essere protette.
- L'endpoint API che consente di aggiungere il prodotto più richiesto al carrello dovrebbe essere protetto.

I miei percorsi URL dell'API sono generici
Modifica i percorsi URL della tua API in modo che contengano l'ID del prodotto o lo slug come parametri della stringa di query.
https://tickets.example.com/v1/api/basket -> https://tickets.example.com/v1/api/basket?id=64398
Ciò determinerà l'abbinamento delle stanze tramite CrowdHandler.
Prevenire lo spoofing
Nella tua API, verifica che l'ID del prodotto o lo slug inclusi nell'URL dell'API corrispondano all'ID del prodotto o allo slug presenti nel payload. Senza questo ulteriore livello di protezione, l'ID del prodotto o lo slug presenti nella stringa di query potrebbero essere modificati per aggirare la configurazione della tua stanza CrowdHandler.
Scenario 2 - L'endpoint API utilizza un dominio diverso da quello del sito che stai proteggendo.
Esempio
Dominio protetto - https://tickets.example.com
Endpoint API - https://datasource.com/v1/api
della sala CrowdHandler#
- Configura le tue stanze CrowdHandler in modo da proteggere il dominio del sito (https://tickets.example.com), NON il dominio dell'API.
- Le pagine in cui gli utenti finali aggiungono il prodotto più richiesto al carrello devono essere protette.
- La configurazione delle stanze deve corrispondere esclusivamente agli URL presenti sul dominio protetto.
di implementazione
Modifica del payload delle richieste API
Aggiungi due campi aggiuntivi al payload del percorso API "Aggiungi al carrello". Chiave: sourceURL Valore: location.href (l'URL della pagina protetta che effettua la chiamata API) Chiave: chToken Valore: token CrowdHandler (recuperato dal cookie o dalla memoria locale, a seconda del tipo di integrazione).
Convalida la richiesta lato server.
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)