Санитация при хранении сериализованного массива

Если я храню сериализованный массив в базе данных mysql, я должен дезинфицировать до или после использования функции сериализации. Или мне вообще нужно санировать?

Например:

$details['name'] = mysql_real_escape_string($_POST['name']); $details['email'] = mysql_real_escape_string($_POST['email']); $details['phone'] = mysql_real_escape_string($_POST['phone']); $serializedDetails = serialize($details); // Do SQL query 

Или

 $details['name'] = $_POST['name']; $details['email'] = $_POST['email']; $details['phone'] = $_POST['phone']; $serializedDetails = mysql_real_escape_string(serialize($details)); 

Или, может быть, на втором я могу просто сделать:

 $serializedDetails = serialize($details); 

Всегда используйте mysql_real_escape_string при работе со строками, которые могут иметь кавычки / слэши. Если вы этого не сделаете, вы получите взломанные / злонамеренные запросы. Вывод serialize() иногда имеет кавычки / слэши, поэтому вы должны использовать его. Однако нет необходимости в сериализации каждого элемента массива заранее.

 $details['name'] = $_POST['name']; $details['email'] = $_POST['email']; $details['phone'] = $_POST['phone']; $serializedDetails = mysql_real_escape_string(serialize($details)); 

Как пример: сериализация «привет» даст вам: 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);