Cuando vamos a insertar datos a nuestra base de datos con PHP, tenemos que tener especial cuidado con las inyecciones SQL y demás intentos de que nos inserten datos maliciosos por parte de algún usuario. La siguiente función es probablemente la manera más completa y eficiente de limpiar una cadena de texto antes de insertarla en nuestra base de datos.

function cleanInput($input) {

  $search = array(
    '@<script[^>]*?>.*?</script>@si',   // Elimina javascript
    '@<[\/\!]*?[^<>]*?>@si',            // Elimina las etiquetas HTML
    '@<style[^>]*?>.*?</style>@siU',    // Elimina las etiquetas de estilo
    '@<![\s\S]*?--[ \t\n\r]*>@'         // Elimina los comentarios multi-línea
  );

    $output = preg_replace($search, '', $input);
    return $output;
  }

function sanitize($input) {
    if (is_array($input)) {
        foreach($input as $var=>$val) {
            $output[$var] = sanitize($val);
        }
    }
    else {
        if (get_magic_quotes_gpc()) {
            $input = stripslashes($input);
        }
        $input  = cleanInput($input);
        $output = mysql_real_escape_string($input);
    }
    return $output;
}

Un ejemplo de cómo usar esta función:

$cadena_maliciosa = "Hola <script src='http://www.evilsite.com/bad_script.js'></script> Es un buen día!";
$cadena_limpia = sanitize($cadena_maliciosa);
// $cadena_limpia devuelve "Hola! Es un buen día!"

// También lo puedes usar para las variables POST/GET
$_POST = sanitize($_POST);
$_GET  = sanitize($_GET);

Sobre Reacción Estudio

Somos un estudio informático formado por jóvenes centrados en el desarrollo web, el diseño gráfico y la fotografía. Puedes solicitar presupuesto para tu proyecto a través de nuestra página web o por teléfono, pero en este blog hablaremos de todo lo que engloba el desarrollo web a día de hoy.


Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.     ACEPTAR