Permessi di file e cartelle in PrestaShop: la configurazione corretta
Un 777 «per farlo funzionare» è un invito. Ti spieghiamo i permessi corretti e come sistemarli senza rompere il negozio.
Quando un modulo non riesce a scrivere in una cartella, la tentazione è dargli i permessi 777. Funziona, ma allo stesso tempo permette a qualsiasi processo del server di scriverci, compreso un attaccante che abbia trovato una vulnerabilità.
I valori corretti
- Cartelle: 755
- File: 644
- File di configurazione (
app/config/parameters.php): 640 o 600 se il server lo permette.
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
Il proprietario conta più del numero
PrestaShop ha bisogno di scrivere in var/, img/, upload/, download/, themes/*/assets/cache, modules/ (per installare) e translations/. Se i file appartengono allo stesso utente con cui gira PHP, 755/644 basta. Altrimenti, il problema è il proprietario, non i permessi.
root. I file di cache restano intestati a root, il server web non riesce a sovrascriverli e il back office inizia a dare errori 500. Usa sempre l'utente del server web.Bloccare PHP nelle cartelle di upload
Nelle cartelle in cui si caricano file, nessun .php dovrebbe mai essere eseguito. Con Apache, un .htaccess in ognuna:
<FilesMatch "\.(?i:php|phtml|phar|pht)$">
Require all denied
</FilesMatch>
PrestaShop 9 include di serie un modules/.htaccess che nega l'accesso diretto ai file .php dentro modules/. I moduli devono esporre i loro punti d'ingresso come controller (index.php?fc=module&module=...), non come file PHP sciolti.
Dopo un aggiornamento
Gli aggiornamenti di PrestaShop possono sovrascrivere .htaccess e altri file del core. Se avevi regole di sicurezza aggiunte a mano, verifica che ci siano ancora.