1
PHP / [TUTORIAL] Funcion Anti-RFI
« en: 28 de Noviembre de 2008, 15:35:04 pm »
Bueno con esta funcion, pretendo evitar que nos hagan un Remote File Inclusion. Esto se usa cuando la victima incluye una pagina de esta manera: www.pagina.com/index.php?incluyo=contacto.php (aunque nosotros aqui la incluimos sin extension, por ejemplo si qeremos incluir casas.php, solo ponemos "casas")
<?
function antiRfi($arrayPags,$msj,$options,$tabla,$GETvar) {
/*
$arrayPags = array con las paginas permitidas para inclusion. ej: contacto.php
$msj = mensaje de error ante un intento de hacking
$options = si pones "saveInTable" en esta variable de la funcion, se guardaran datos del atacante
$tabla = nombre de la tabla donde se guarda la info del atacante: sus columnas son: id, ip, nav, ref, fecha y GETchange
$GETvar = aca la variable qe toma la pagina que hace la inclusion. ej: index.php?include=ESTA_ES_LA VARIABLE
*/
$arrayCnt=count($arrayPags); // cuento cuantas paginas tiene el array con paginas permitidas
}
?>
<?
function antiRfi($arrayPags,$msj,$options,$tabla,$GETvar) {
/*
$arrayPags = array con las paginas permitidas para inclusion. ej: contacto.php
$msj = mensaje de error ante un intento de hacking
$options = si pones "saveInTable" en esta variable de la funcion, se guardaran datos del atacante
$tabla = nombre de la tabla donde se guarda la info del atacante: sus columnas son: id, ip, nav, ref, fecha y GETchange
$GETvar = aca la variable qe toma la pagina que hace la inclusion. ej: index.php?include=ESTA_ES_LA VARIABLE
*/
$arrayCnt=count($arrayPags); // cuento cuantas paginas tiene el array con paginas permitidas
for($a=0;$a<=$arrayCnt;$a++) { // paso por todas las paginas permitidas
$expPag=explode(".",$arrayPags[$a]);
$pag=$expPag[0]; // le quito la extension a la pagina
if($pag==$GETvar) { // si la variable (sin extension) esta dentro de las paginas permitidas
$include=$arrayPags; // la variable include contiene la pagina a incluir con extension
}
}
if(!empty($include)) { // si la variable tiene una pagina para incluir
include($include); // la incluyo
} else { // sino..
echo "<center>".$msj."</center>"; // muestro mensaje de error
if($options=="saveInTable") { // si qiere q se guarde en la tabla
$fecha=time();
$ip=$_SERVER["REMOTE_ADDR"];
$nav=$_SERVER['HTTP_USER_AGENT'];
$ref=$_SERVER['HTTP_REFERER'];
mysql_query("INSERT INTO $tabla (id,ip,nav,ref,fecha,GETchange) VALUES (NULL,'$ip','$nav','$ref','$fecha','$GETvar')");
}
}
}
?>




