У меня есть 8 input type text. name=favour_01
8 input type text. name=favour_01
Я делаю эти 8 input
в array
и serialize
его
Я использую PDO
чтобы сохранить его в БД.
Чем он неэтериализуется для вывода
$favour[]='apple'; $favour[]='banana'; $favours = serialize($favours); prepare(... $food->bindValue(':favours', $favours, PDO::PARAM_STR);
это безопасно? Я прочитал, что ввод в сериализацию уязвим.
Я не использовал для этого какой-либо класс, вот одно сообщение, которое я прочитал https://www.owasp.org/index.php/PHP_Object_Injection
Сериализация данных – это только риск для безопасности, когда сериализуемые данные содержат конфиденциальную информацию. Риск состоит в том, что вы, например, сериализуете данные, содержащие пароли, а затем сохраняете сериализованную форму где-то небезопасной.
Несериализация данных – это риск безопасности, если вы попытаетесь выполнить несериализацию данных, полученных вами из ненадежного источника. Процесс unserialization может создавать объекты, и поэтому ввод данных может делать то, чего вы не ожидаете.
То, что вы делаете для сериализации простого массива значений для привязки к параметру SQL, хорошо с точки зрения безопасности, но имейте в виду, что вы не сможете эффективно искать базу данных для определенных значений внутри этого сериализованного массива , В основном ваша база данных становится черным ящиком: вы можете набивать в нее весь массив и извлекать весь массив для десериализации, но вы не можете легко прочитать или написать отдельные элементы массива с SQL.
Лучше всего создать дочернюю таблицу и сохранить один элемент в строке в этой таблице.
да, это безопасно, если вы используете подготовленный оператор, а затем проверяете данные после извлечения из базы данных до вывода в браузер.