La funzione, o per meglio dire, il costrutto sintattico include() che permette di richiamare all'interno di un codice PHP il contenuto di un file esterno, ha rappresentato a lungo una 'porta di accesso' molto comoda per le azioni di defacement operate dai crakers.
L'azione di defacement consiste nel sostituire la home page di un sito internet utilizzando un'altra scelta dal craker, ne consegue una naturale perdita di traffico verso le nostre pagine web e, cosa non meno importante, un danno d'immagine non indifferente.
Oggi, per fortuna, i defacement causati da un utilizzo improprio del costrutto include() sono abbastanza rari in quanto sono state introdotte numerose contromisure utili ad evitare questo evento 'fastidioso'.
Innazitutto, ne abbiamo già parlato, è possibile disabilitare dal PHP.INI la direttiva allow_url_fopen, questo impedirà di poter utilizzare le URL come fossero file e diminuirà le possibili inclusioni esterne.
In secondo luogo è possibile effettuare un controllo direttamente dal codice della nostra applicazione, limitando le possibili inclusioni a quelle permesse dallo sviluppatore:
<? $nome_file = "./file.php"; if (file_exists($nome_file)) { include($nome_file); } ?>In pratica, il listato prevede l'inclusione di una determinata pagina e non di altre, il costrutto if controlla che la pagina deputata sia presente nel server e soltanto in quel caso ne permette l'inclusione.
<Files ~ ".inc"> Order allow, deny Deny from all Satisfy All </Files>Sarà inoltre possibile aggiungere agli .inc un'estensione secondaria direttamente da codice:
<? $nome_file .= ".php"; ?>Oppure, si potrà aggiungere .inc alle estensioni consentite per i file contenenti codice PHP in httpd.conf:
AddType application/x-httpd-php .phtml ... .php .incAttenzione: questo articolo è stato concesso in esclusiva per la pubblicazione a Mrwebmaster.it; ne è vietata la riproduzione,
Recentemente un utente mi ha richiesto delle informazioni su un vecchio articolo intitolato "Leggi l'articolo