En principio se trata de que no hagas un "include()" directo como lo haces .. Tu crees que "forzando" la extensión del archivo a incluir y dato que llega por el URL tipo index.php?id=nose te ivas a salvar.
Se trata de que en la medida de lo posible tengas una lista de tus scripts permitidos a incluir en un array por ejemplo. De esta forma puedes validar si el dato que te piden está en tu array y si no está .. rechazarlo. Es una manera bastante segura .. pues el n° de scripts a incluir son "finitos" .. en principio.
Puedes usar un array y funciones como in_array() para este tipo de validaciones:
www.php.net/array
Por lo demás, NO HAGAS:
Código PHP:
<?
foreach($_GET as $nombre_campo => $valor){
$asignacion = "\$" . $nombre_campo . "='" . $valor . "';";
eval($asignacion);
}
?>
Usa y accede directamente a $_GET o al array supeglobal que necesites .. NO los evalues!!. Eso sólo es una manera de hacerte más fácil la llamada a variables ..pero NO es seguro! .. Es decir, pierde un poco de tiempo en generar tu código para que este sea seguro por siempre.
Un saludo,