Impedire l’accesso alle cartelle associate agli addon domain con htaccess [technical]

Come impostare htaccess per far si che la cartelle associate ai sottodomini (addon domain) non siano raggiungibili dal dominio principale: ovvero come evitare di pubblicare contenuti duplicati.

Come impostare htaccess per far si che la cartelle associate ai sottodomini (addon domain) non siano raggiungibili dal dominio principale: ovvero come evitare di pubblicare contenuti duplicati.


Attraverso il mio webserver semidedicato, ho la possibilità di gestire i siti dei miei clienti, puntando i lori domini sul mio server ed associando al dominio cliente una cartella sul mio server.

Questa procedura crea degli addon domain, ovvero dei domini che risultano accessibili da più url.

La procedura standard per creare un addon domain infatti, crea anche un dominio di terzo livello del dominio principale, da cui si può accedere ai contenuti della cartella associata.

In pratica, se io registro “miodominio.com” e creo via cpanel un addon domain sul mio web server associando “miodominio.com” alla cartella “mioserver/public_html/miodominio”, viene creato anche un dominio di terzo livello, per cui il sito residente nella cartella associata sarà raggiungibile da

  • miodominio.com
  • mioserver.com/miodominio
  • miodominio.mioserver.com

E questo non mi va!

I siti residenti sulla cartella “miodominio” infatti verrebbero pubblicati tre volte, rischiando di essere penalizzati dal punto di vista della SEO

È pur vero che i crawler dei motori di ricerca non potrebbero raggiungere la cartella “miodominio”, poichè sul dominio principale non è presente alcun link ad essa.

In ogni caso ho la pretesa che nessun utente possa percorrere una strada diversa da quella che ho scelto per arrivare al sito del cliente, ovvero il nome del dominio.

Ho fatto diverse ricerche in rete ma, tra le varie soluzioni trovate,  nessuna soddisfaceva la mia esigenza.

Il consiglio più diffuso infatti è quello di implementare in htaccess delle regole di reindirizzamento e riscrittura affinché le ‘url mioserver.com/miodominio e miodominio.mioserver.com siano reindirizzata su miodominio.com.

Ma non vedo perché dovrei avere un redirect di una cartella o di un sottodominio verso un sito che nulla ha a che fare col mio…

Preferisco che un’eventuale errore nel percorrere la strada porti l’utente su una pagina non trovata (404).

Se l’utente digita mioserver.com/miodominio deve avere come risultato un errore 404 restituito dal sito sul dominio principale.

La soluzione, forse, è la più semplice.

Ho ottenuto il risultato desiderato scrivendo sul file htaccess del dominio principale la seguente regola, per ogni cartella associata ad un dominio addon:

RewriteEngine On
Redirect /midominio http://mioserver/non-trovata
Sul mio server gira wordpress che, alla richiesta della pagina “non-trovata” (che in effetti non esiste) restituirà l’errore 404.

Autore: Fabio Colombari

Editore ed Autore di OkkiO, blog online dal 2007,Bassista dei Carte48...Scegliere la personalità preferita...

  • Picci

    Spero tu sappia che se uno qualsiasi dei tuoi “clienti” ha accesso ad una qualsiasi directory ftp interna alla public_html, e ha quindi la possibilità di creare e/o modificare uno script php può tranquillamente reggiungere (sempre tramite php) un qualsiasi file contenuto nella public_html principale (mioserver.com) e TUTTE le sue sottocartelle.

    Qualcuno sà per caso come poter impedire questa cosa? (ho trovato questo post appunto cercando una soluzione a questo problema)

  • http://fabiocolombari.me Fabio

    @picci …quanta irruenza… :) i miei clienti tra virgolette non hanno accesso ftp, perché non vendo spazio web. Precisato questo, a quale script ti riferisci? Se è quello che penso… spero che tu sappia… che settando le impostazioni del server puoi impedire l’accesso alle cartelle. Naturalmente io parlavo di un semidedicato, nel qual caso non ho accesso alla configurazione, ma i miei fornitori hanno implementato ogni misura di sicurezza, quindi lo script, almeno quello che conosco io, non funziona. Magari allega lo script che lo testo, poi eventualmente ti faccio rispondere dal nostro esperto di sicurezza informatica.

  • Picci

    mi scuso per l’irruenza, come ho detto stavo cercando una soluzione a questo problema e poichè anche a me si tratta di addon-domains creati da cpanel, suppongo che anche nel caso descritto nel primo post si possa verificare questa difficile situazione.
    Se non erro, su un server semidedicato, ogni utente può accedere tramite script php (include() ne è un semplice esempio), solo e ad ogni file contenuto nella cartella public_html e sue sub. Un mio amico mi ha chiesto se potevo accogliere un suo semplice sito sul mio servizio hossting e gli ho proposto un addon-domain. Tutto bene finchè, dato che su quell’hosting io sto sviluppando un’applicazione più complessa, il giorno dopo mentre mi trovavo a inserire una riga di include in un mio script ho avuto una sorta di illuminazione che mi ha fatto prendere un bello spavento. In pratica ho scoperto che (ma forse era ovvio, solo che per mia mancanza mi era sfuggito) un qualsiasi script inserito dal mio amico tramite account ftp dell’addon-domain configurato per accedere esclusivamente alla sua document root, può tranquillamente includere, o più semplicemente leggere e scrivere, ovunque all’interno della document root del dominio principale, il mio. Spero di essermi dilungato troppo. Per quanto riguarda lo script di esempio, un ipotetico include(‘../include/myclass.inc.php’) eseguito da uno script.php salvato nella root dell’addon-domain è utile allo scopo.

  • http://fabiocolombari.me Fabio

    Picci, secondo me c’è un incomprensione di fondo e non hai considerato le autorizzazioni utente.

    Ti posto la replica di Claudio de Rossi, esperto di sicurezza informatica e technical writer:

    L’accesso di un utente a un sito ftp è vincolato a regole di autenticazione e autorizzazione, ciò significa che chiunque accede al servizio ottiene accesso e permessi relativi al suo profilo utente.
    Se l’amministratore dei sistemi (web server, application server, database server, ecc) permette la scrittura sulla root e/o la propagazione/ereditarietà dei permessi alle sottocartelle, evidentemente ha fatto le sue valutazioni.

    “Se non erro, su un server semidedicato, ogni utente può accedere tramite script php (include() ne è un semplice esempio), solo e ad ogni file contenuto nella cartella public_html e sue sub”

    Puoi accedere al file php e includerlo in una pagina , ma non ti verrà restituito il sorgente!
    Per le sub folders vale quello detto sopra, ma è naturale che il contenuto di una cartelle chiamata “public_html” sia accessibile pubblicamente!

    “In pratica ho scoperto che (ma forse era ovvio, solo che per mia mancanza mi era sfuggito) un qualsiasi script inserito dal mio amico tramite account ftp dell’addon-domain configurato per accedere esclusivamente alla sua document root,”

    Tralasciamo il fatto che lo script sia inserito via ftp, non ci interessa.

    “può tranquillamente includere, o più semplicemente leggere e scrivere, ovunque all’interno della document root del dominio principale, il mio”

    Inclusione, lettura , scrittura sono tre cose profondamente differenti.
    Il file php incluso viene restituito compilato.
    Se quella che tu chiami “documet root” è una cartella utilizzata appositamente per essere scritta dall’utente che esegue l’applicazione web, è naturale che possa essere acceduta.
    Comunque puoi approfondire qui : http://www.fayazmiraz.com/remove-subdomain-access-from-addon-domain/.

  • Picci

    Ti porgo un sincero ringraziamento, in quanto ho effettivamente verificato che è esattamente come mi hai indicato. Dunque il problema è risolto. Grazie mille per l’aiuto e complimenti per la completezza e la competenza.

  • http://fabiocolombari.me Fabio

    Grazie a te! Siamo qui anche per questo.
    Torna a trovarci!