La index.php di un sito da me realizzato è strutturata come segue
<?php
$pagina='inc_middle2.php';
/*$pag='';*/
if (isset ($_COOKIE['accesso'])) {
if (isset($_GET['pag'])) // Il link cliccato ha passato le variabili?
{
$pag = 'inc_' . $_GET['pag'] . '.php'; // ..se si`, il box centrale diventa la pagina selezionata
}
if (!file_exists ($pag)) // La pagina non esiste?
{
$pag = 'error.php'; // ..se si`, il box centrale diventa la pagina di errore
}
}
$stile = 'firefox.css';
if (strstr ($_SERVER["HTTP_USER_AGENT"], "MSIE 5")) { $stile = 'explo5.css';}
if (strstr ($_SERVER["HTTP_USER_AGENT"], "MSIE 6")) { $stile = 'explo.css';}
$tpl = implode("",file("top.htm"));
$tpl = str_replace("{fogliodistile}", $stile, $tpl);
/*stuttura del sito*/
include "topphp.php";
echo "$tpl";
include "top2.php";
include "middlel.php";
if (isset ($_COOKIE['accesso'])) { include "$pag"; } else { include "$pagina"; }
include "middler.php";
include "down.php";
Lo staff che gestisce il dominio ove gira il webserver sul quale è presente questo sito mi ha contattato dicendo che sono stati vittima di spam e malfunzionamenti al web sever stesso causa cross scripting, ovvero la index.php richiama e include pagine esterne passando variabili via URL.QUlacuno ha passato come variabili i nomi di pagine di siti esterni facendo in modo di caricarli all'interno del mio sito.
Ora io ho aggiunto un controllo if file_exist per controllare se la pagina caricata è effettivamente presente in locale. Secondo voi è sufficiente questa modifica ad impedire accessi esterni tramite url? Oppure che voi sappiate si riesce ad eludere anche questo controllo. In tal caso infatti dovrei rivedere l'intero sito. Non vorrei però avere problemi con chi gestisce il web server. Tanto per capirci non sono stato io a causare danni. L'ha fatto qualcuno dall'esterno ma sembra che comunque la colpa sia mia perchè ho lasciato una porta aperta (diciamo così)..
GRAZIE A TUTTI!