Ver Mensaje Individual
  #5 (permalink)  
Antiguo 12/05/2010, 04:47
Avatar de Heli0s
Heli0s
 
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años, 8 meses
Puntos: 40
Respuesta: Seguridad en PHP [Importante];

Para colaborar con la seguridad de las webs, decir que aparte de las funciones indicadas, que si se usasen siempre reducirían mucho las posibilidades de atacar a la web, otra posibilidad añadida a la seguridad es comprobar de que tipo son las variables externas, un ejemplo muy típico es pasar un ID por GET, de lo que haga falta, y en el 100% de los casos (excluyendo los ataques) ese ID será numérico, entonces si sabemos que siempre debe ser numérico, ¿Porque no forzar a que sea numérico, o dar un error en caso de que no lo sea?

Forzar a que un dato sea numérico:
Código PHP:
$var = (int)$_GET['id']; //si la variable empieza con numeros y despues le sigue un string solo se veran los numeros, si empieza con letras y después tiene números, su valor sera 0 
Comprobar que sea numérico:
Código PHP:
if(!is_numeric($_GET['id'])){
    die(
"La variable ID contiene caracteres no permitidos");
    
//aqui podriamos logear este comportamiento en un archivo log, guardar ip, enviarnos un email, lo que hiciese falta


Un saludo

P.D: Vaya, mientras he escrito todo esto ya han comentado esta idea, jeje

EDIT: edito para añadir que esto se podría usar con cualquier tipo de dato, no solo con numéricos, is_bool, is_int, is_float, is_numeric (este último incluye a is_int y is_float), is_string, is_array, is_object, is_resource, is_null, is_scalar.