Permissões de ficheiros e pastas no PrestaShop: a configuração correta
Um 777 «para funcionar» é um convite. Explicamos as permissões corretas e como corrigi-las sem estragar a loja.
Quando um módulo não consegue escrever numa pasta, a tentação é dar-lhe permissões 777. Funciona e, ao mesmo tempo, permite que qualquer processo do servidor escreva lá, incluindo um atacante que tenha encontrado uma vulnerabilidade.
Os valores corretos
- Pastas: 755
- Ficheiros: 644
- Ficheiros de configuração (
app/config/parameters.php): 640, ou 600 se o servidor o permitir.
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
O proprietário importa mais do que o número
O PrestaShop precisa de escrever em var/, img/, upload/, download/, themes/*/assets/cache, modules/ (para instalar) e translations/. Se os ficheiros pertencerem ao mesmo utilizador com que o PHP corre, 755/644 chega. Se não, o problema é de proprietário, não de permissões.
root. Os ficheiros de cache ficam em nome do root, o servidor web não consegue sobrescrevê-los e o back office começa a dar erros 500. Use sempre o utilizador do servidor web.Bloquear PHP nas pastas de carregamento
Nas pastas para onde se carregam ficheiros, nenhum .php deve ser executado, nunca. Com Apache, um .htaccess em cada uma:
<FilesMatch "\.(?i:php|phtml|phar|pht)$">
Require all denied
</FilesMatch>
O PrestaShop 9 traz de origem um modules/.htaccess que nega o acesso direto a ficheiros .php dentro de modules/. Os módulos devem expor os seus pontos de entrada como controladores (index.php?fc=module&module=...), não como ficheiros PHP soltos.
Depois de uma atualização
As atualizações do PrestaShop podem sobrescrever o .htaccess e outros ficheiros do núcleo. Se tinha regras de segurança acrescentadas à mão, confirme que continuam lá.