Claudiogarau.it :: Tutorials & Scripts, PHP, Linux and more.

Home ~ Php :: Inclusioni e sicurezza degli script PHP :: Indice Php

Inclusioni e sicurezza degli script PHP

Categoria: Php Inserito il: 10-07-2006 Stampa (6992 click)

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.

Un altro sistema valido per evitare i possibili danni derivanti da inclusioni è quello di gestire i file con estensione .inc; le soluzioni sono diverse: o non li si utilizza affatto o è possibile intervenire sul file di configurazione di Apache httpd.conf negando l'accesso a questo tipo di file:
<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 .inc 
Attenzione: questo articolo è stato concesso in esclusiva per la pubblicazione a Mrwebmaster.it; ne è vietata la riproduzione,
anche parziale, senza l'esplicito consenso dell'autore e della redazione di Mrwebmaster.it.

Cerca nel sito
Per sito
Sviluppatore di applicazioni Web con competenze evolute nella progettazione delle basi di dati, autore per alcune delle più importanti testate on line dedicate alla manualistica tecnica (HTML.it, MrWebmaster.it, Edit) e consulente per l'e-learning.
Tutte le categorie
Tutorial Random
Impaginare i record di MySQL per colonne
Spesso si presenta la necessità di dover impaginare i record selezionati da una tabella di MySQL per colonne; molti tutorial... Leggi l'articolo
Corsi online per sviluppatori
Corsi per Webmaster, Web Designer, Programmatori, Grafici e Sistemisti