Mysql
 sql >> Base de données >  >> RDS >> Mysql

Assainissement lors du stockage d'une baie sérialisée

Toujours utilisez mysql_real_escape_string lorsqu'il s'agit de chaînes qui pourraient avoir des guillemets / barres obliques. Si vous ne le faites pas, vous obtiendrez des requêtes cassées/malveillantes. La sortie de serialize() a parfois des guillemets / barres obliques, vous devez donc l'utiliser. Il n'est cependant pas nécessaire de sérialiser chaque élément du tableau au préalable.

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

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

Juste à titre d'exemple :sérialiser "hello" vous donnera :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);