Sicurezza WordPress Headless: Checklist Completa
Un’architettura headless WordPress offre vantaggi di sicurezza intrinseci, ma richiede configurazioni specifiche. Ecco la checklist completa per proteggere il tuo stack.
Separazione Backend/Frontend
Il primo livello di sicurezza è nascondere completamente WordPress:
- ✅ CMS su sottodominio dedicato (es.
cms.tuosito.it) - ✅ Firewall IP whitelist per accesso admin
- ✅ Nessun link diretto dal frontend al backend
- ✅ Robots.txt che blocca indicizzazione CMS
Autenticazione REST API
Opzione 1: Application Passwords (WordPress 5.6+)
// Genera password applicazione in WP Admin → Utenti → Profilo
const auth = btoa('username:app-password-generated');
fetch('https://cms.example.com/wp-json/wp/v2/posts', {
headers: { 'Authorization': 'Basic ' + auth }
});
Opzione 2: JWT Token
Plugin consigliato: JWT Authentication for WP REST API
// Login per ottenere token
const response = await fetch('https://cms.example.com/wp-json/jwt-auth/v1/token', {
method: 'POST',
body: JSON.stringify({ username, password })
});
const { token } = await response.json();
// Usa token per API calls
fetch('https://cms.example.com/wp-json/wp/v2/posts', {
headers: { 'Authorization': 'Bearer ' + token }
});
Hardening WordPress CMS
- Disable XML-RPC:
add_filter('xmlrpc_enabled', '__return_false'); - Hide WP version: Remove
wp_head()meta tag - Limit login attempts: Plugin Limit Login Attempts Reloaded
- 2FA: Google Authenticator o Authy
- SSL/TLS: Certificato Let’s Encrypt con auto-renewal
- File permissions:
- Directories:
755 - Files:
644 wp-config.php:440o400
- Directories:
Nginx Security Headers
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy strict-origin-when-cross-origin;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline';";
Monitoring & Audit
- 📊 Fail2Ban: Ban IP dopo tentativi login falliti
- 🔍 Wordfence: Scan malware automatico
- 📝 Activity Log: Plugin Simple History
- 🔔 Uptime monitoring: UptimeRobot o Pingdom
Backup Strategy
- ⏰ Frequenza: Giornaliera per DB, settimanale per file
- ☁️ Storage: AWS S3 o Google Cloud Storage
- 🔄 Retention: 30 giorni rolling
- ✅ Test restore: Mensile su staging environment
Auriti Design implementa questa checklist completa su tutti i progetti headless, garantendo sicurezza enterprise-grade.
Juan Camilo Auriti
GEO, AEO & AI Consultant — Creatore di GEO Optimizer e GEOReady
Vuoi ottimizzare il tuo sito per AI search?
Audit GEO gratuito su GEOReady oppure consulenza personalizzata.