Gestione degli Header HTTP di sicurezza in Joomla 4

Tra le nuove funzionalità che saranno presenti in Joomla 4, c'è anche la gestione degli Header HTTP di Sicurezza, attraverso un nuovo sistema sviluppato appositamente. Il sistema è stato progettato per consentire ai gestori di un sito web di configurare gli Header HTTP di Sicurezza direttamente dal backend.

Le informazioni presenti in questo articolo sono basate sulla versione Joomla 4.0 Alpha 8 con il relativo template di backend. L'aspetto e le funzionalità potrebbero subire modifiche nel corso dello sviluppo di Joomla 4.

Il Plugin HTTP Headers

La gestione degli Header HTTP di Sicurezza avviene tramite un nuovo plugin di sistema plg_system_httpheaders.

Per accedere alla configurazione del plugin: System > Plugins > System - HTTP Headers.

Configurazione del plugin

Da questa pagina è possibile scegliere se scrivere gli header nel file di configurazione del server (.htaccess e web.config) e configurare se abilitare i seguenti header HTTP:

Utilizzando il modulo "Additional HTTP Headers" è possibile configurare anche i seguenti header con i rispettivi valori:

Configurazione Strict-Transport-Security (HSTS)

Da questa pagina è possibile scegliere di abilitare l'header Strict-Transport-Security (HSTS) e configurarne il valore max-age, così come scegliere se includere anche i sottodomini o se aggiungere il sito alla lista Preload dei browser.

Il Componente Content Secuirty Policy (com_csp)

Per accedere al componente e visualizzare la dashboard dei Report Content Security Policy: System > Content Security Policy.

Report

800px Joomla 40 content security policy reports en

Da questa schermata l'Amministratore ha una panoramica globale dei Report raccolti da Content Security Policy ed ha la possibilità di controllare, pubblicare, sospendere ed eliminare le regole suggerite per la direttiva Content Security Policy.

Opzioni

Joomla 40 content security policy options en

Da questa schermata è possibile configurare le opzioni del componente come i permessi ed alcune specifiche impostazioni per Content-Security-Policy, quali diverse modalità e se utilizzare gli header in modalità sola lettura.

Sviluppatori di estensioni

Come molti sviluppatori sapranno, il maggior vantaggio derivante dall'adozione di Content Security Policy consiste nell'utilizzare l'Header per bloccare JavaScript e CSS inline. Tuttavia è talora necessario avere JavaScript e CSS inline, per questa ragione è stato implementato il supporto ad una notifica nelle API JavaScript e CSS ed utilizzando questa notifica è ancora possibile inserire in whitelist il proprio JavaScript e CSS inline e bloccare qualsiasi altro codice malevolo per proteggere il proprio sito.

Per far sì che le estensioni continuino a funzionare anche quando una Content Security Policy restrittiva è abilitata, il metodo più semplice è quello di utilizzare le API di Joomla per applicare il proprio JavaScript e CSS inline, come negli esempi successivi.

Aggiungere JavaScript utilizzando le API di Joomla

use Joomla\CMS\Factory;

// Add JavaScript from URL
Factory::getDocument()->addScript('https://example.org/sample.js');

// Add inline JavaScript
Factory::getDocument()->addScriptDeclaration('
    window.event("domready", function() {
        alert("An inline JavaScript Declaration");
    });
');

Aggiungere CSS utilizzando le API di Joomla

use Joomla\CMS\Factory;

// Add Style from URL
Factory::getDocument()->addStyleSheet('https://example.org/sample.css');

// Add inline Style
Factory::getDocument()->addStyleDeclaration('
body {
background: #00ff00;
color: rgb(0,0,255);
}
');