Programacion Segura con PHP [Olvidate de limpiar tus variables]

miércoles, 26 de marzo de 2008 by Azielito

Como todos sabemos podemos poner el archivo de conexion a la base de datos en un archivo, y, entonces mandamos a llamarlo y listo Cheesy
Ahora bien, que pasa si antes de hacer la conexion limpiamos todas las variables que pasan por GET o POST (o por cookie)? asi tendremos siempre limpias nuestras variables y evitamos ataques XSS y SQLi Cheesy

El archivo final es este


# Funcion para limpiar caracte-
# res que pudieran comprometer
# al servidor y/o al usuario
function limpia($var){
$var = strip_tags($var);
$malo = array("\\",";","\'","'"); // Aqui poner caracteres no permitidos
$i=0;$o=count($malo);
while($i<=$o){
$var = str_replace($malo[$i],"",$var);
$i++;
}
return $var;
}

# Funcion que aplica la funcion anterior
# para no tener que preocuparnos por
# ataques de XSS o SQLi
function LimpiarTodo($datos){
if(is_array($datos)){
$datos = array_map('limpia',$datos);
}else{
die("Error: La funcion LimpiarTodo debe contener un arreglo.");
}
return $datos;
}
if($_POST){
$_POST =& LimpiarTodo($_POST);
}
if($_GET){
$_GET =& LimpiarTodo($_GET);
}

# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_DB = "localhost"; // El host del MySQL
$database_DB = "DataBase"; // Nombre de la base de datos
$username_DB = "usuar10"; // Usuario con l que te conectas
$password_DB = "th3pas5sz"; // Contraseña ñ_ñ
$serpub = mysql_connect($hostname_DB, $username_DB, $password_DB) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database_DB);


Ahora solo nos queda insertar ese archivo cuando hacemos alguna operacion en MySQL y listo! nos olvidamos de limpiar las variables una a una para evitar los ataques antes mencionados




Para evitar ataques de RFI entonces en esta linea


$malo = array("\\",";","\'","'"); // Aqui poner caracteres no permitidos

agregamos los dos puntos ( ":" ) y la diagonal ( "/" ) si sabemos que nunca se usaran estos caracteres en los campos de nuestra base de datos
Quedaria asi
Código:

$malo = array("\\",";","\'","'",":","/"); // Aqui poner caracteres no permitidos

y quedamos seguros evitando que nos metan los "caracteres malditos"

Filed under having  

1 comentarios:

Carlos dijo...
Este comentario ha sido eliminado por el autor.