File Upload e Sicurezza in Fluent Forms
La possibilità di caricare file tramite i moduli è una funzionalità essenziale per molti siti web: candidature con allegato CV, richieste di assistenza con screenshot, moduli di registrazione con foto documento o form per la raccolta di materiale grafico. Tuttavia, il file upload è anche una delle funzionalità più delicate dal punto di vista della sicurezza. In questo articolo vedremo come configurare correttamente il campo file upload in Fluent Forms, le best practice per la sicurezza e come proteggere il tuo sito da potenziali minacce legate al caricamento di file.

Il Campo File Upload in Fluent Forms
Fluent Forms offre due varianti del campo di caricamento file:
File Upload Base (versione Free)
Il campo file upload disponibile nella versione gratuita permette agli utenti di caricare uno o più file insieme al modulo. Le opzioni di configurazione includono:
- Tipi di file accettati: puoi specificare le estensioni permesse (es. .pdf, .doc, .jpg, .png)
- Dimensione massima per file: limita la dimensione di ogni singolo file caricato (in MB)
- Numero massimo di file: quanti file può caricare l’utente per questo campo
- Obbligatorietà: se il caricamento del file è obbligatorio o facoltativo
Image Upload (versione Pro)
Il campo Image Upload è una versione specializzata ottimizzata per le immagini che aggiunge funzionalità come l’anteprima dell’immagine caricata, il ridimensionamento automatico e la compressione. È ideale per moduli dove servono foto (candidature, profili, documentazione visiva).
Drag and Drop Upload (versione Pro)
La versione Pro aggiunge anche la funzionalità drag and drop: l’utente può trascinare i file direttamente nell’area di upload senza dover usare il file picker del browser. Questa funzionalità migliora significativamente l’esperienza utente, specialmente su desktop.
Configurazione del File Upload
Per aggiungere un campo file upload al tuo modulo, trascinalo dall’elenco dei campi avanzati nell’area del form. Poi clicca sul campo per accedere alle opzioni di configurazione.
Tipi di File: Cosa Permettere
La scelta dei tipi di file da accettare è il primo livello di sicurezza. Ecco le nostre raccomandazioni per i casi d’uso più comuni:
- Documenti: .pdf, .doc, .docx, .odt (evita .exe, .bat, .sh, .php e altri file eseguibili)
- Immagini: .jpg, .jpeg, .png, .gif, .webp (evita .svg a meno che non sia strettamente necessario, perché può contenere codice JavaScript)
- Fogli di calcolo: .xls, .xlsx, .csv, .ods
- Presentazioni: .ppt, .pptx, .odp
- Archivi compressi: .zip, .rar (solo se necessario e con controlli aggiuntivi)
Regola d’oro: permetti solo i tipi di file strettamente necessari per il caso d’uso specifico. Meno tipi permetti, più sicuro sarà il tuo modulo.
Dimensione Massima dei File
La dimensione massima per file dipende dal tuo caso d’uso e dalla configurazione del server. Tieni presente che WordPress e PHP hanno i propri limiti:
- upload_max_filesize: il limite massimo di PHP per il singolo file (spesso 2 MB di default)
- post_max_size: il limite massimo per l’intera richiesta POST (spesso 8 MB di default)
- max_execution_time: il tempo massimo per l’elaborazione della richiesta
Se il limite configurato in Fluent Forms supera quello di PHP, l’upload fallirà con un errore. Verifica e, se necessario, modifica i limiti PHP dal pannello del tuo hosting (in Plesk, vai su PHP Settings del dominio).
Per la maggior parte dei casi d’uso, consigliamo:
- CV e documenti: 5-10 MB per file
- Immagini: 5-10 MB per file
- Screenshot: 2-5 MB per file
- Archivi: 20-50 MB (solo se indispensabile)
Dove Vengono Salvati i File
Per default, Fluent Forms salva i file caricati nella cartella wp-content/uploads/fluentform/ del tuo sito WordPress. I file vengono organizzati in sottocartelle per data (anno/mese) e rinominati con un hash univoco per evitare conflitti di nome e per una prima misura di sicurezza (l’URL del file non è prevedibile).
È importante sapere che i file caricati sono accessibili tramite URL diretto se qualcuno conosce il percorso. Per file sensibili, sono necessarie misure di sicurezza aggiuntive che vedremo più avanti.

Sicurezza del File Upload: Le Minacce
Il file upload è uno dei vettori di attacco più comuni per i siti web. Le principali minacce includono:
1. Upload di File Malevoli
Un attaccante potrebbe tentare di caricare un file PHP, JavaScript o un web shell mascherato come un’immagine o un documento. Se il server esegue il file, l’attaccante potrebbe ottenere accesso completo al sito. Questo è noto come Arbitrary File Upload ed è una delle vulnerabilità più critiche classificate da OWASP.
2. Bypass dell’Estensione
Alcuni attaccanti usano tecniche come la doppia estensione (malware.php.jpg), i null byte (malware.php{6fb8dad3a9c483f1a21adb5997a0bd0fb65a4b2f8344003d223c5d2f2542798c}00.jpg) o le estensioni alternative (.phtml, .php5) per aggirare i filtri basati sull’estensione del file.
3. File Contenenti Malware
Anche file apparentemente innocui come PDF o documenti Word possono contenere macro malevole o exploit. Sebbene questi non rappresentino una minaccia diretta per il server, possono infettare chi li apre.
4. Attacchi DoS tramite File Grandi
Un attaccante potrebbe tentare di caricare ripetutamente file di grandi dimensioni per esaurire lo spazio disco o la banda del server.
Misure di Sicurezza in Fluent Forms
Fluent Forms implementa diverse misure di sicurezza per proteggere il tuo sito:
Validazione dell’Estensione
Il plugin verifica che l’estensione del file caricato sia nell’elenco delle estensioni permesse. Questa è la prima linea di difesa ma non è sufficiente da sola perché può essere aggirata.
Verifica del MIME Type
Fluent Forms verifica anche il MIME type del file (il tipo di contenuto dichiarato nell’header del file) per assicurarsi che corrisponda all’estensione. Questo aggiunge un livello di protezione contro i tentativi di mascheramento.
Rinominazione dei File
I file vengono rinominati con un hash univoco, rendendo impossibile prevedere l’URL del file caricato. Questo protegge da attacchi di tipo “direct access” dove l’attaccante tenta di accedere a un file caricato conoscendone il nome.
Nonce e CSRF Protection
Il processo di upload è protetto da token nonce di WordPress per prevenire attacchi CSRF (Cross-Site Request Forgery). Solo le richieste autentiche provenienti dal modulo vengono accettate.
Misure di Sicurezza Aggiuntive Consigliate
Oltre alle protezioni native di Fluent Forms, ti consigliamo di implementare le seguenti misure aggiuntive a livello di server:
1. Disabilitare l’Esecuzione PHP nella Cartella Upload
Aggiungi un file .htaccess nella cartella wp-content/uploads/ con il seguente contenuto:
# Blocca l’esecuzione di file PHP
<Files *.php>
deny from all
</Files>
# Blocca anche varianti
<FilesMatch ".(php|phtml|php3|php4|php5|php7|phps)$">
deny from all
</FilesMatch>
Questo impedisce l’esecuzione di qualsiasi file PHP nella cartella upload, anche se un attaccante riuscisse a caricarne uno.
2. Limitare l’Accesso Diretto ai File
Per file sensibili, puoi configurare l’accesso ai file caricati in modo che siano accessibili solo tramite script PHP autenticato, non tramite URL diretto. Questo richiede una configurazione personalizzata del server.
3. Scansione Antivirus
Su server con ClamAV installato, puoi configurare una scansione automatica dei file caricati. Molti hosting professionali offrono questa funzionalità integrata. In alternativa, puoi usare servizi online come VirusTotal API per scansionare i file in modo asincrono.
4. Rate Limiting
Limita il numero di upload che un singolo IP può effettuare in un determinato periodo per prevenire attacchi DoS. Fluent Forms offre impostazioni di limitazione delle submission che puoi configurare per ogni modulo.

Gestione dei File Caricati
Accesso ai File dalle Entry
Tutti i file caricati sono accessibili dalla sezione Entries di Fluent Forms. Per ogni submission che include un file upload, troverai il link per scaricare o visualizzare il file direttamente dalla dashboard.
Pulizia Periodica
I file caricati occupano spazio sul disco del server. È buona pratica implementare una routine di pulizia periodica per eliminare i file più vecchi che non sono più necessari. Puoi farlo manualmente dalla cartella uploads o programmare uno script di pulizia automatica.
Backup dei File
Assicurati che la cartella di upload sia inclusa nei backup regolari del tuo sito. I file caricati dagli utenti sono dati importanti che non possono essere recuperati se persi.
File Upload e GDPR
Se i file caricati contengono dati personali (documenti d’identità, CV, foto), devi gestirli in conformità al GDPR:
- Informativa: informa l’utente su come verranno utilizzati e conservati i file caricati
- Conservazione limitata: non conservare i file più a lungo del necessario. Definisci e rispetta una politica di conservazione
- Diritto alla cancellazione: devi essere in grado di eliminare i file su richiesta dell’utente
- Sicurezza: i file con dati personali devono essere protetti da accessi non autorizzati
- Consenso: raccogli il consenso esplicito per il trattamento dei dati contenuti nei file
Allegare File alle Notifiche Email
Fluent Forms permette di allegare i file caricati direttamente alle notifiche email. Questa funzionalità è comoda ma va usata con cautela:
- Limiti di dimensione: la maggior parte dei server SMTP ha un limite sugli allegati (tipicamente 10-25 MB). File più grandi causeranno il fallimento dell’invio email
- Sicurezza: i file vengono inviati in chiaro via email. Per file sensibili, è meglio inserire un link protetto per il download
- Performance: l’invio di email con allegati pesanti può rallentare il processo e aumentare il tempo di risposta del modulo
Per file di grandi dimensioni, consigliamo di non allegare il file all’email ma di inserire un link per scaricarlo dalla dashboard di WordPress. Puoi usare la variabile {all_data} che include automaticamente i link ai file caricati.
Risoluzione dei Problemi Comuni
“Il file è troppo grande”
Questo errore indica che il file supera il limite configurato. Verifica il limite in Fluent Forms e i limiti PHP (upload_max_filesize e post_max_size). Il limite effettivo sarà il più basso tra tutti questi valori.
“Tipo di file non permesso”
L’estensione del file non è nell’elenco delle estensioni consentite. Aggiungi l’estensione necessaria nelle impostazioni del campo o verifica che il file abbia l’estensione corretta.
“Upload fallito” senza messaggio specifico
Potrebbe essere un problema di permessi sulla cartella di upload. Verifica che la cartella wp-content/uploads/fluentform/ esista e abbia i permessi corretti (755 per le cartelle, 644 per i file). Su Plesk, verifica che l’utente del dominio abbia i permessi di scrittura sulla cartella.
Conclusione
Il file upload è una funzionalità potente ma che richiede attenzione dal punto di vista della sicurezza. Fluent Forms offre protezioni integrate solide, ma è fondamentale complementarle con misure aggiuntive a livello di server. Configurando correttamente i tipi di file permessi, i limiti di dimensione e le protezioni del server, puoi offrire ai tuoi utenti la possibilità di caricare file in modo sicuro e affidabile.
📚 Leggi anche gli altri articoli della serie su Fluent Forms
- Come Installare e Configurare Fluent Forms su WordPress
- Creare il Primo Form con Fluent Forms: Editor Drag and Drop
- Fluent Forms: Tutti i Campi Disponibili e Come Usarli
- Logica Condizionale Avanzata in Fluent Forms
- Fluent Forms e i Pagamenti: Accettare Stripe e PayPal
- Notifiche Email e Conferme in Fluent Forms
- Form Conversazionali con Fluent Forms: UX Innovativa
- Multi-Step Form con Fluent Forms: Moduli a Più Passaggi
- Fluent Forms: Integrazioni con CRM, Email Marketing e Zapier
- Quiz, Sondaggi e Calcolatori con Fluent Forms
- Fluent Forms Free vs Pro: Confronto Funzionalità e Prezzi 2026
- Fluent Forms vs WPForms vs Gravity Forms: Confronto 2026
- Fluent Forms: Report, Analytics e Gestione delle Entry
- Risolvere i Problemi Comuni di Fluent Forms: Troubleshooting
Hai bisogno di configurare il file upload in modo sicuro sul tuo sito WordPress? Contatta il team di G Tech Group per una consulenza sulla sicurezza. Configureremo i tuoi moduli con tutte le protezioni necessarie per garantire la massima sicurezza senza compromettere l’usabilità.
Migliora il Tuo Sito WordPress
Scopri le nostre guide complete sugli altri plugin essenziali per WordPress: