sql >> Base de Datos >  >> RDS >> Mysql

Desinfección al almacenar una matriz serializada

Siempre use mysql_real_escape_string cuando se trata de cadenas que pueden tener comillas/barras. Si no lo hace, obtendrá consultas rotas/maliciosas. La salida de serialize() a veces tiene comillas / barras, por lo que debe usarlo. Sin embargo, no es necesario serializar cada elemento de la matriz de antemano.

$details['name']  = $_POST['name'];
$details['email'] = $_POST['email'];
$details['phone'] = $_POST['phone'];

$serializedDetails = mysql_real_escape_string(serialize($details));

Solo como ejemplo:serializar "hola" le dará:s:5:"hello" .

$data  = 's:5:"hello"';
$query = 'INSERT INTO tbl (data) VALUES ("' . $data . '")';

// leads to a syntax error from mysql
// (plus it's a huge security hole)
mysql_query($query);