Whitelist IP Stripe e Policy Firewall: Consentire il Transito Sicuro dei Payload JSON senza Esporre le REST API
I Webhook di Stripe sono essenziali per il checkout di WooCommerce. Ricevono le notifiche asincrone sullo stato delle transazioni. Senza di essi, gli ordini restano bloccati in sospeso. Se hai già consultato la nostra guida su WooCommerce webhook Stripe e ordini bloccati in attesa di pagamento, conosci l’impatto di questo problema.
Spesso i Web Application Firewall (WAF) scambiano i payload JSON per attacchi informatici. Bloccano così le chiamate di conferma pagamento. Configurare una corretta whitelist IP Stripe risolve questo attrito alla radice. Proteggi le REST API mantenendo i pagamenti sempre attivi.
1. Perché blindare le REST API senza bloccare i pagamenti
Il conflitto tra Web Application Firewall e webhook
I firewall proteggono WordPress analizzando ogni richiesta in ingresso. Cercano pattern malevoli nei parametri URL e nei dati POST. I payload inviati da Stripe contengono oggetti JSON complessi e codici di transazione.
I filtri euristici dei firewall spesso identificano questi dati come falsi positivi. Le chiamate HTTP ricevono quindi risposte 403 Forbidden o 400 Bad Request. Il cliente completa il pagamento, ma l’e-commerce non lo registra mai.
I rischi di esporre wp-json pubblicamente
La soluzione frettolosa consiste nel disattivare del tutto le regole del firewall sulle API REST. Questa pratica espone gravemente l’infrastruttura. I bot possono bersagliare l’endpoint /wp-json/ con attacchi brute-force o User Enumeration.
Serve un approccio granulare. Dobbiamo concedere il transito solo al gateway di pagamento ufficiale. Tutte le altre chiamate non autorizzate devono rimanere bloccate all’ingresso.
2. Recuperare gli indirizzi IP ufficiali di Stripe
L’endpoint ufficiale e i formati CIDR
Stripe non comunica indirizzi IP arbitrari. Il gestore rende pubblici i range di rete dedicati esclusivamente ai webhook. Puoi scaricare l’elenco completo interrogando le API di Stripe:
- Indirizzi per i Webhook:
https://stripe.com/files/ips/ips_webhooks.json - Indirizzi per le API generali:
https://stripe.com/files/ips/ips_api.json
Questi file contengono subnet in formato CIDR IPv4 e IPv6. Utilizza esclusivamente la lista webhook per le tue regole di restrizione.
Automazione e monitoraggio dei range di rete
Stripe aggiorna raramente i propri blocchi IP. Quando lo fa, invia notifiche preventive con mesi di anticipo. Tuttavia, monitorare questo endpoint previene disservizi imprevisti.
Se gestisci server dedicati, puoi programmare uno script cron bash o python. Questo script aggiorna automaticamente il firewall quando il file JSON remoto subisce variazioni.
3. Configurare la whitelist su Cloudflare e WAF perimetrali
Creazione di una Custom Rule sul Cloudflare WAF
Se utilizzi Cloudflare a monte del server, devi impostare una regola prioritaria. Una corretta configurazione della whitelist IP Stripe evita falsi positivi nel WAF.
- Accedi al pannello di controllo del tuo dominio su Cloudflare.
- Vai nella sezione Security e seleziona WAF.
- Clicca su Custom Rules e poi su Create rule.
- Assegna un nome univoco, come Allow Stripe Webhooks.
- Imposta il campo URI Path con operatore starts with su
/?wc-api=wc_stripe. - Aggiungi la condizione logica AND selezionando Source IP Address.
- Inserisci gli indirizzi IP ufficiali di Stripe usando l’operatore is in list.
- Imposta l’azione su Skip o Bypass per WAF e Bot Fight Mode.
Bypass delle sfide JavaScript e Rate Limiting
I webhook Stripe sono client server-to-server. Non sono browser umani e non possono risolvere sfide JavaScript o Captcha visivi.
Disattiva sempre la modalità Under Attack o le sfide interattive per l’endpoint di ricezione pagamenti. Il mancato bypass genererà immediatamente un timeout di connessione.
Avviso di sicurezza: Non impostare mai la regola di bypass sull’intero percorso
/wp-json/. Limita la deroga esclusivamente al percorso specifico utilizzato dal plugin WooCommerce Stripe.
4. Regole Nginx e Apache per proteggere gli endpoint
Limitare l’accesso allo slug del webhook su Nginx
Implementare una whitelist IP Stripe a livello web server blocca subito il traffico abusivo. Alleggerisce il carico computazionale di PHP e del database MySQL.
Nel blocco server di configurazione di Nginx, puoi inserire questa direttiva:
- Crea una mappa o una direttiva
locationmirata. - Inserisci le direttive
allow <IP_STRIPE>;per ogni subnet CIDR. - Aggiungi la direttiva finale
deny all;per bloccare tutti gli altri mittenti. - Ricarica Nginx con il comando
nginx -s reload.
Verifica congiunta della firma crittografica Stripe-Signature
La restrizione per indirizzo IP è una difesa eccellente, ma non sufficiente da sola. Gli IP possono teoricamente essere soggetti a spoofing avanzato in determinate configurazioni di rete.
Mantieni sempre attiva la validazione del Webhook Signing Secret nel plugin WooCommerce. Il plugin verificherà l’header HTTP Stripe-Signature. In questo modo avrai una protezione combinata a doppio fattore: perimetro di rete e firma crittografica.
5. Domande Frequenti (FAQ) su Firewall e Webhook Stripe
Basta applicare la whitelist IP Stripe senza verificare l’header crittografico?
No, non basta. La restrizione IP è un controllo perimetrale per filtrare il traffico malevolo e salvare risorse del server. La firma crittografica Stripe-Signature garantisce l’autenticità e l’integrità del payload. Entrambe le difese devono lavorare insieme per garantire la massima sicurezza.
Cosa succede se Stripe aggiunge un nuovo IP non presente nella lista?
Se il firewall opera con logica di blocco totale, la richiesta del nuovo IP riceverà un errore 403. Stripe ritenterà l’invio per un massimo di tre giorni con intervalli esponenziali. Iscriviti alla mailing list sviluppatori di Stripe per aggiornare le regole prima che i nuovi range diventino operativi.
Perché Wordfence blocca i webhook anche se il server permette l’IP?
Wordfence si esegue a livello di codice PHP all’interno di WordPress. Se il Web Application Firewall di Wordfence è configurato in modalità restrittiva, bloccherà il payload JSON prima dell’elaborazione di WooCommerce. In questo caso, devi andare nelle opzioni di Wordfence, individuare l’evento nel Live Traffic e impostare l’azione su Add Param to Allowlist.
