Infocurci - programmatore Php Roma
Infocurci - programmatore Php Roma
Benvenuti nel sito "faster than 98% of all tested websites" (tools.pingdom.com) senza cookie e senza pubblicità     

Magento : Dove carica i file di configurazione Magento?

La cartella app/etc di Magento è particolarmente delicata. Non commettete l'errore di lasciarvi dentro dei files di lavoro, magari le classiche copie di sicurezza: potreste bloccare il vostro shop..

Magento

Un giorno sono stato contattato da un cliente alle prese con un problema alquanto anomalo. Quando aggiornava la cache del proprio negozio Magento, il sistema segnalava un errore di connessione al database Mysql e quindi il sito presentava agli utenti la fastidiosa pagina "There has been an error processing your request".

Cosa era successo?

Nella cartella app/etc un precedente sviluppatore aveva lasciato una copia del vecchio file di configurazione local.xml, chiamandola local_old.xml e pensando cosi di avere a disposizione un innocuo backup di sicurezza. Ma non è cosi.
Nel file

app/code/core/Mage/Core/Model/Config.php

nella funzione loadBase() vengono caricati, come descritto nel commento php, "base system configuration (config.xml and local.xml files)".

In realtà la funzione non esegue grossi controlli di sicurezza:

public function loadBase()
    {
        $etcDir = $this->getOptions()->getEtcDir();
        $files = glob($etcDir.DS.'*.xml');
        $this->loadFile(current($files));
        while ($file = next($files)) {
            $merge = clone $this->_prototype;
            $merge->loadFile($file);
            $this->extend($merge);
        }
        if (in_array($etcDir.DS.'local.xml', $files)) {
            $this->_isLocalConfigLoaded = true;
        }
        return $this;
    }

si limita a caricare tutti i file xml ( glob($etcDir.DS.'*.xml'); ) e cosi anche un file chiamato local_old.xml finisce per essere aggiunto al processo. Se dentro a questo file sono contenute, come nel caso del mio cliente, delle credenziali di accesso al database ormai obsolete.. la frittata è fatta.

L'unica cosa da fare è sincerarsi di non aver, nelle cartelle di Magento, nessun file al di fuori di quelli predefiniti (fatta eccezione ovviamente per le opportune directory messe a disposizione apposta per lo sviluppo di estensioni: /app/code/local, /skin e via dicendo).
A proposito: non dovrebbe mai accadere (sia per la configurazione di Magento che per quella del servizio di hosting), ma è bene fare un rapido controllo e verificare che i file .xml presenti dentro le cartelle /app/etc non siano visibili ai malintenzionati che cercano di usufruirne. Basta provare a scaricare i files con un qualsiasi browser per vedere se i file xml sono -clamorosamente- visibili al resto del mondo.

Tutorial pubblicato il 11/12/2015