Remote File Inclusion

posted by Viralex | 20-Sep-2007 14:22

L'rfi ovvero remote file inclusion è una tecnica che permette di inserire codice maligno, ad esempio in pagine php tramite il comando include.
Per capirne il funzionamento nel PHP basta conoscere due importanti comandi : GET e include.

1) Il comando GET serve ad impostare il valore di una variabile, ricavandolo direttamente dall'url della pagina, esempio:
http://www.sito.it/pag.php?variabile=valore

nel codice php ci sarà:

$variabile=$_GET['variabile'];
echo $variabile;

questo comando non fanno altro che ricavare il valore di variabile (valore) dall'url appunto, e metterlo in $variabile e stamparlo sulla pagina.

2) L'altro comando (include), permette di includere una pagina nella pagina in cui è contento il comando:

include('pag.php');

questo inserisce il codice della pagina pag.php nella pagina che si sta visualizzando.

3) Ora possiamo cominciare a vedere come usarli insieme:
http://www.sito.it/pagina.php?pag=pag.php

nel codice php ci sarà:

include($_GET['pag']);

Questo codice prende il valore di pag dall'url (cioè pag.php) e la inserisce nella pagina.


4) L'rfi consiste nell'includere al posto di pag.php, un altro codice proveniente da un sito esterno potenzialmente dannoso.

Il PHP permette l'esecuzione di codice (in PHP) inserito in un file con estensione .txt, .jpg, ecc.
Se includiamo codice '.php' non vierrà eseguito sul nostro server ma sul server da cui viene eseguito.


Per evitare questo problema possiamo effettuare un controllo sull'input oppure impedendo l'inclusione di pagine esterne al nostro sito. Ovviamente tutte le pagine del sito devono essere sicure, altrimenti è inutile.

Ecco come fare:
$pagina = $_GET['pag'];
include($_SERVER["HTTP_HOST"] . "/" . $pagina);

Ho imparato tutto poco tempo fa scrivendo il codice di questo blog quindi non mi ritengo un veterano in questo campo. Se ho commesso qualche errore vedrò di correggerlo

Grazie spero che la guida sia stata utile!


page 1 - 0 comments