aca dejo cada funcion y me gustaria que opinen respecto a cual es la mejro para Uds.
Funcion Nro 1 [posteada por Znet]
Código PHP:
function clean_bad_chars($char)
{
$ban=0;//Bandera para saber si estan ejecutando una Inyeccion SQL
$char_w_replaced = stripslashes($char);//Guardamos la Inyeccion original para informacion a la BD
//Array con las palabras reservadas, para modificar a gusto :D
$hack_array = array("'", '"', ";", "UNION", "union", "DROP", "drop", "table", "TABLE", "SET", "set", "UPDATE", "update", "SELECT", "select", "-", "--", "MEMB_INFO", "memb_info", "memb__pwd", "memb___id"); //Caracter por el que será reemplazada cada palabra reservada del sitio
$hack_replace = ""; //Separamos la cadena en un Array para poder hacer la comparacion y determinar si estan
//ejecutando o no una Inyeccion SQL
$char1=explode(" ",$char);
for($i=0;$i<count($char1);$i++)
{
if(in_array($char1[$i],$hack_array))//si se quiere se puede convertir todo a mayusculas para la comprobacion.
{
$ban=1;
}
}
if ($ban==1)
{
$add="ESTAS HACKEANDO SI SI";
//guardar informacion en base de datos sobre el intento de hacking como IP, etc...
}
else
{
$add="NO ESTAS HACKEANDO";
//seguir con los procesos del POST o GET sin guardar ips ni nada
}
//reemplazamos las palabras reservadas
$char_replaced = str_replace($hack_array, $hack_replace, $char);
//evitamos codigos html y espacios en blanco
$char_clean=htmlentities(trim($char_replaced)); //retornamos la cadena limpia para usar en nuestra consulta, o podemos devolver segun el resultado de ban
//un die para no ejecutar nada o como se les ocurra
return $char_clean.$add;
}
Código PHP:
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
Código PHP:
$variable=GetSQLValueString($_GET['Id'],"int");