Mysql
 sql >> Database >  >> RDS >> Mysql

Disinfezione durante la memorizzazione di array serializzati

Sempre usa mysql_real_escape_string quando si tratta di stringhe che potrebbero contenere virgolette/barre. In caso contrario, riceverai query non funzionanti / dannose. L'output di serialize() a volte ha virgolette / barre, quindi dovresti usarlo. Tuttavia, non è necessario serializzare in anticipo ogni elemento dell'array.

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

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

A titolo di esempio:serializzare "hello" ti 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);