Impostazioni dell’host attendibile
Questa documentazione è incompleta. Scopri di più qui.
Protezione contro gli attacchi HTTP HOST Header (impedisci al tuo sito di credere di essere qualcun altro)
Drupal 7 ha aggiunto al core una nuova funzionalità, non destinata all’interazione diretta con l’utente, talvolta chiamata poormanscron. Questa funzione esegue attività periodiche del sito Drupal, come la pulizia dei log, l’invio di e-mail e la cancellazione delle cache. Tuttavia, combinata con la rilevazione dinamica dell’“URL di base” (introdotta in Drupal 4.7), può creare situazioni problematiche. Questo articolo descrive alcuni di questi casi e come prevenirli.
Scenario 1: Ricezione o invio di e-mail per utenti di un altro dominio
Questo comportamento è facilmente riproducibile:
1. Punta un nuovo dominio all’indirizzo IP di un sito esistente — chiamiamo il sito originale http://www.example.com e il nuovo dominio http://other-site.example.org.
2. Visita l’URL: http://other-site.example.org/user/password
3. Inserisci un nome utente valido del sito.
Poiché Drupal rileva dinamicamente il valore di $base_url
, considererà other-site.example.org come dominio principale, e quindi i link nelle e-mail (ad esempio quelli di reimpostazione password) useranno questo dominio errato. L’utente riceverà un’e-mail con link a un dominio che non riconosce, il che può portare a:
- un attacco in cui un sito malevolo intercetta la reimpostazione della password;
- un tentativo di phishing, dove l’utente inserisce le proprie credenziali sul dominio sbagliato.
Scenario 2: Cache contenenti domini errati
Se un utente accede al sito con un dominio errato, i dati memorizzati nella cache possono contenere riferimenti a tale dominio, e successivi visitatori potrebbero vedere URL errati. Il sistema di cache di pagina di Drupal evita questo problema includendo il dominio come parte dell’ID di cache, ma altri sistemi di caching potrebbero non farlo.
Scenario 3: E-mail cron con dominio errato
Se un modulo invia e-mail durante l’esecuzione di cron e questo viene attivato su un dominio errato, le e-mail conterranno link sbagliati, causando confusione negli utenti.
Soluzioni per i problemi con il rilevamento dinamico di $base_url
Esistono diverse soluzioni per prevenire questi problemi:
- Impostare manualmente il valore
$base_url
insites/default/settings.php
. - Utilizzare file
settings.php
specifici per dominio, comesites/example.com/settings.php
. - Configurare il server web per mostrare una pagina di errore se la richiesta non proviene dal dominio corretto.
- Configurare il server per reindirizzare tutte le richieste con domini non autorizzati verso quello principale.
Configurazione della sicurezza del Trusted Host in Drupal 8
Da gennaio 2015, Drupal 8 supporta i “modelli di host attendibili”. È possibile (e consigliato) specificare una serie di espressioni regolari che determinano quali domini sono considerati validi. Un esempio di configurazione nel file settings.php
è il seguente:
$settings['trusted_host_patterns'] = [ '^www\.example\.com$', ];
Per gli ambienti di sviluppo locale, aggiungere anche '^localhost$'
per evitare blocchi del sito.
Impostazione dell’host attendibile per MAMP 3
In MAMP (3.5.2), l’impostazione '^localhost$'
può causare l’errore “Specified host name is not valid for this server”. La soluzione è usare il nome del sito locale senza la porta, ad esempio:
$settings['trusted_host_patterns'] = [ '^drupal8$', ];
Nota: su MAMP 4.2 '^localhost$'
funziona correttamente.
Impostazione dell’host attendibile per Acquia Dev Desktop 2
Per Acquia Dev Desktop 2 (testato con Drupal 8.6.2 e PHP 7.2.8), utilizza:
$settings['trusted_host_patterns'] = array( '^sitename\.dd$', );
Sostituisci sitename
con il nome effettivo del tuo sito.
Impostazione dell’host attendibile per XAMPP
Per XAMPP (testato con Drupal 8.4.0 e PHP 7.1.8), aggiungi nel file settings.php
:
$settings['trusted_host_patterns'] = [ '^localhost$', '^192\.168\.00\.52$', '^127\.0\.0\.1$', ];
Dove:
'^localhost$'
consente l’accesso solo da localhost.'^192\.168\.00\.52$'
consente l’accesso dal proprio IP locale.'^127\.0\.0\.1$'
consente l’accesso tramite l’indirizzo di loopback.
Per un multisito, elenca tutti i pattern consentiti.
Impostazione dell’host attendibile per Lando
Per Lando (testato con Drupal 8.7.10 e PHP 7.2), aggiungi nel file settings.php
:
$settings['trusted_host_patterns'] = [ '^'.getenv('LANDO_APP_NAME').'\.lndo\.site$', '^localhost$', '^'.getenv('LANDO_APP_NAME').'\.localtunnel\.me$', '^192\.168\.1\.100$', ];
Lando include anche molte variabili d’ambiente che possono essere usate per configurare automaticamente le credenziali del database, ad esempio tramite:
$lando_info = json_decode(getenv('LANDO_INFO'), TRUE);
oppure controllando l’output di phpinfo()
.