Configurare upload_max_filesize e post_max_size in WordPress in Sicurezza

Gestire file multimediali pesanti su WordPress può generare blocchi improvvisi. Spesso l’upload di un plugin o di un tema fallisce senza avvisi chiari. Questo comportamento dipende dai limiti nativi imposti dall’ambiente PHP del server.

Se riscontri blocchi generici durante il caricamento, consulta la nostra guida per risolvere l’errore del link scaduto in WordPress. In questo articolo approfondiremo i file di configurazione del server. In questa guida vedremo come configurare upload_max_filesize e post_max_size con criteri orientati alla sicurezza.

Aumentare queste soglie senza criterio espone il sito a gravi rischi sistemici. Gli aggressori possono sfruttare upload massivi per saturare la memoria del server. Scopriamo come bilanciare usabilità e protezione contro gli attacchi DoS.

La relazione tecnica tra upload_max_filesize, post_max_size e memory_limit

PHP gestisce l’elaborazione dei dati HTTP tramite parametri concatenati. Comprendere questa catena evita errori di configurazione frequenti. Ogni direttiva stabilisce un tetto massimo per operazioni specifiche.

Come interagiscono le direttive PHP

La direttiva upload_max_filesize definisce il peso massimo per un singolo file caricato. Se tenti di caricare un video oltre tale valore, PHP rigetta l’operazione. Il sistema blocca il caricamento prima ancora di passarlo all’applicazione.

La direttiva post_max_size controlla la dimensione totale del payload inviato via richiesta POST. Una richiesta può contenere più file e campi modulo. Pertanto, questo valore deve sempre comprendere anche il peso del file singolo.

La gerarchia corretta dei valori numerici

Per garantire il funzionamento del server, rispetta sempre una precisa proporzione matematica. Il limite di memoria complessivo governa l’intero processo di esecuzione script. Un rapporto scorretto rende vano qualsiasi incremento dei limiti.

Segui rigorosamente questa gerarchia logica nei parametri:

  • memory_limit: deve essere il valore più alto della catena (es. 256M).
  • post_max_size: deve essere pari o inferiore a memory_limit (es. 64M).
  • upload_max_filesize: deve essere sempre inferiore o uguale a post_max_size (es. 32M).

Metodo 1: Modificare il file php.ini e .user.ini

Il primo metodo consiste nel configurare upload_max_filesize e post_max_size agendo direttamente sul file php.ini. Questo documento definisce il comportamento globale del motore PHP sul web server.

Accesso e configurazione passo-passo del php.ini

Se gestisci un server VPS o dedicato, hai accesso root a questo file. La procedura richiede pochi passaggi da riga di comando o via SFTP.

  1. Accedi al server via SSH con privilegi amministrativi.
  2. Individua il percorso di php.ini digitando il comando php --ini.
  3. Apri il file con un editor di testo, ad esempio con il comando nano /etc/php/8.2/fpm/php.ini.
  4. Cerca le righe relative alle direttive e aggiornale con valori bilanciati:
  • upload_max_filesize = 32M
  • post_max_size = 48M
  • memory_limit = 256M

Salva le modifiche apportate al file. Riavvia il servizio PHP digitando systemctl restart php8.2-fpm. Riavvia anche il server web Apache o Nginx per sicurezza.

Gestione tramite .user.ini su server condivisi

Su molti hosting condivisi non puoi modificare il file globale del sistema. PHP offre una soluzione alternativa tramite i file locali .user.ini. Questo file agisce soltanto sulla directory in cui viene collocato.

Crea un file chiamato .user.ini nella cartella principale (public_html o webroot). Inserisci all’interno i valori desiderati esattamente come visto per il php.ini. I server PHP-FPM leggono queste modifiche entro circa cinque minuti.

Metodo 2: Configurazione avanzata tramite file .htaccess

Nei server basati su Apache o LiteSpeed puoi intervenire sul file .htaccess. Questo metodo è pratico perché risiede nella cartella radice di WordPress.

Sintassi corretta per server Apache

Accedi ai file del sito tramite FTP o File Manager di cPanel. Cerca il file nascosto .htaccess situato nella root del tuo dominio. Apri il file ed inserisci il blocco di codice prima dei commenti di WordPress.

  • php_value upload_max_filesize 32M
  • php_value post_max_size 48M
  • php_value memory_limit 256M

Queste istruzioni consentono di aumentare il limite di upload php senza toccare il sistema. Verifica subito che il pannello multimediale mostri la nuova capienza massima.

Risoluzione di eventuali errori 500 Internal Server Error

Se il sito mostra un errore 500, il server esegue PHP in modalità FastCGI o FPM. In questa configurazione Apache non permette la direttiva php_value in .htaccess.

Rimuovi immediatamente le righe aggiunte dal file .htaccess per ripristinare il sito. In questo scenario devi utilizzare obbligatoriamente il file .user.ini o il pannello di controllo dell’hosting.

Consiglio operativo per la sicurezza: Evita sempre di impostare limiti spropositati come 1GB o 2GB. Se devi caricare video pesanti, utilizza storage dedicati esterni come Amazon S3 o Vimeo. Mantieni l’ambiente WordPress leggero e protetto.

Mitigazione dei rischi: prevenire DoS e Resource Exhaustion

Molti amministratori commettono gravi errori quando scelgono di configurare upload_max_filesize e post_max_size senza cautele. Aprire le porte a file enormi crea una vulnerabilità diretta verso attacchi DoS.

Perché impostare limiti smisurati è pericoloso

Durante il caricamento di un file, PHP crea copie temporanee nella cartella di sistema. Il server deve allocare socket di rete, thread CPU e spazio su disco.

Un aggressore può inviare simultaneamente centinaia di richieste con file molto grandi. Questo attacco porta rapidamente alla saturazione della RAM e dello storage locale. Il web server smette di rispondere a tutti gli utenti legittimi.

Parametri di supporto: max_execution_time e max_input_time

Se alzi la dimensione dei caricamenti, devi calibrare i timeout del server. Altrimenti le connessioni lente falliranno prima di completare il processo di upload.

  • max_execution_time = 120: imposta il tempo massimo di esecuzione dello script in secondi.
  • max_input_time = 120: stabilisce la durata consentita per l’acquisizione dei dati via POST.

Non superare mai valori di 300 secondi per questi parametri. Timeout troppo lunghi bloccano i worker del server, facilitando l’esaurimento delle risorse disponibili.

Best practice di hardening per la sicurezza del server

Rafforzare la sicurezza dell’upload richiede interventi multilivello sul software. Implementa queste regole sul tuo ambiente WordPress:

  • Limita i tipi di file consentiti tramite il plugin o la configurazione del functions.php.
  • Blocca l’esecuzione di script PHP all’interno della cartella /wp-content/uploads/.
  • Attiva un Web Application Firewall (WAF) come Cloudflare per filtrare richieste malevole.
  • Imposta un limite alla dimensione del body delle richieste direttamente su Nginx o Apache.

Domande Frequenti su upload_max_filesize e post_max_size

Perché le modifiche a php.ini non compaiono nella bacheca di WordPress?

Spesso il file modificato non corrisponde a quello attivo per la versione PHP in uso. Verifica il file caricato andando su Strumenti > Salute del sito > Informazioni > Server. Inoltre, ricordati sempre di riavviare il servizio PHP-FPM dopo ogni modifica manuale.

Perché è cruciale configurare upload_max_filesize e post_max_size impostando valori bilanciati?

Un valore eccessivo consente a chiunque di saturare memoria e banda del server con pochi script automatici. Mantenere valori proporzionati impedisce blocchi dell’intero server e previene attacchi di esaurimento risorse.

Cosa succede se post_max_size è inferiore a upload_max_filesize?

Se post_max_size è più piccolo, qualsiasi caricamento che superi tale valore fallirà silenziosamente. L’array $_POST e l’array $_FILES risulteranno completamente vuoti in PHP, generando comportamenti anomali in WordPress.

Articoli simili