Intereting Posts
Возвращаемое значение эхо-функции PHP vs echo внутри функции получить # из URL-адреса в php PHP хранит только 1048576 символов в массиве Как выполнить несколько вложений MySQL в PHP Laravel 4 не освежает Присвоение значения каждому элементу массива PHP регулярное выражение php для соответствия определенному шаблону url Параметр функции со странным поведением кодировки в PHP Использование preg_replace для возврата к ссылочному массиву ключей и замена на значение как я могу получить диапазон дат на прошлой неделе в php? Как я могу дешифровать хеш-пароль в PHP? Почему мое тестовое приложение в бесконечном цикле перенаправления? отправка push-уведомлений на несколько устройств Android с использованием GCM Javascript / PHP Family Tree Builder с несколькими родителями Как мне получить доступ к циклическому циклу с храповым механизмом php и отправке клиента внутри приложения?

что является хорошим методом для дезинфекции всего массива $ _POST в php?

У меня есть форма с большим количеством переменных, которые затем отправляют электронное письмо, а не дезинфицируют каждое значение $_POST с помощью filter_var($_POST['var'], FILTER_SANITIZE_STRING); Я был после более простой части кода. Я придумал ниже, что, похоже, работает, поскольку я считаю, что действие по умолчанию – FILTER_SANITIZE_STRING , но мне просто интересно, что такое мнения людей, и если это не хорошая практика, возможно, вы могли бы мне объяснить, почему? Значения $_POST затем индивидуально внедряются в новые переменные, поэтому я бы использовал массив array_map только в начале, чтобы дезинфицировать все …

 $_POST = array_map('filter_var', $_POST); 

Спасибо за ваши ответы, чтобы дать вам немного больше информации, в основном:

У меня есть 20-30 полей ввода в форме, которые записываются, данные затем отображаются пользователю для проверки их ввода, затем переменные подвергаются дезинфекции, затем пользователю отправляется электронное письмо, а затем, наконец, детали вводятся в db ,

в настоящее время я дезинфицирую использующ вышеуказанную функцию array_map, а также FILTER_SANITIZE_EMAIL на адресе электронной почты перед отправкой электронной почты, а затем избегая ввода с помощью mysql_real_escape_string () перед вставкой в ​​db. Не вдаваясь в подготовленные заявления и т. Д., Как вы думаете, я должен делать что-нибудь дополнительно? еще раз спасибо!

Solutions Collecting From Web of "что является хорошим методом для дезинфекции всего массива $ _POST в php?"

Если тип каждой из ваших входных переменных является строкой, и вы хотите дезинформировать их все сразу, вы можете использовать:

 // prevent XSS $_GET = filter_input_array(INPUT_GET, FILTER_SANITIZE_STRING); $_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); 

Это будет дезинфицировать ваши массивы $ _GET и $ _POST.

Видно здесь: PHP -Sanitize значения массива

Зависит от того, для чего он используется.

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

Если вы планируете выводить данные на веб-страницу, я бы рекомендовал что-то вроде htmlspecialchars()

Если вы планируете использовать пользовательский ввод в качестве аргумента оболочки, вы должны использовать escapeshellarg()

Перейдем к вашему вопросу о отправке писем. Ну, должно быть достаточно:

 filter_var($_POST['message'], FILTER_SANITIZE_STRING); 

Все это делает в основном стрип-теги и кодирует специальные символы.

Не существует правильного способа делать полноценную санитарию. Какой метод санитарии вам нужен, зависит от того, что делается с данными.

Санируйте данные непосредственно перед их использованием.

Это то, что я использую во всех своих проектах:

 function util_array_trim(array &$array, $filter = false) { array_walk_recursive($array, function (&$value) use ($filter) { $value = trim($value); if ($filter) { $value = filter_var($value, FILTER_SANITIZE_STRING); } }); return $array; } 

Это позволяет обрезать и дезинфицировать вложенный массив опубликованных данных