WordPress ed il pattern MVC: la realtà

WordPress ed il pattern MVC: la realtà

Nell'articolo Improving Your Work-Flow – Separate Your Mark-Up From Your Logic! viene chiamato in causa il pattern MVC di PHP in modo piuttosto superficiale. In questo articolo vorrei spiegare perché un approccio MVC reale non è possibile in WordPress.

Il core è fuori dalla root

Solitamente nel modello MVC reale gli unici file e directory ammessi nella root di un sito sono:

  1. index.php
  2. /assets (JavaScript, CSS, immagini)
  3. .htaccess

Tutto il resto è fuori dalla root del sito. Il framework Zend segue questo approccio. Invece in WordPress tutto ha luogo nella root del sito, con ovvi problemi di sicurezza.

I recenti exploit (non da ultimo una injection remota ai danni del tema TwentyTen) dimostrano la fallacità di questo approccio. Quindi anche se noi ci illudiamo di stare usando un approccio MVC solo perché creiamo un Loop separato e lo inseriamo in un metodo tramite include(), stiamo solo scimmiottando qualcosa di completamente differente.

Sicurezza

WordPress è prevedibile. Una regola d'oro nell'eterna lotta tra sistemisti e attaccanti è quella di cercare di non lasciare punti di riferimento all'aggressore. In WordPress, ma anche in altri CMS, i nomi dei file e delle directory sono noti e, cosa peggiore, all'interno della root del sito.

Nel pattern MVC reale non ci sono punti di riferimento: la directory core può essere chiamata app, xyz o GqhzXOS3rh e i nomi dei file non sono predefiniti.

Usare un include() con leggerezza all'interno del nostro tema è cosa ben peggiore che creare un Loop e restituirlo sotto forma di stringa HTML: la stringa infatti vive all'interno di una funzione o di un metodo, mentre un template è accessibile anche dall'esterno.

Conclusioni

Dato che in un CMS come WordPress implementare un pattern MVC nel vero senso della parola non è possibile per via dell'architettura di WordPress, occorre stare attenti nello sperimentare tecniche improprie per questo CMS.

Torna su