Целесообразна ли такая обработка $_POST?

158
07 августа 2018, 16:10

Может ли злоумышленник отправить методом $_POST какую нибудь билеберду, в обход формы? Например, я ожидаю получить $_POST['userName'] и $_POST['userEmail'] , а мне приходит $_POST['iAm'] и $_POST['coolHacker']. В таком случае, если для меня критичны названия полей, и далее я их использую в своём скрипте - это может нарушить его работу. Что бы не работать напрямую с массивом $_POST, целесообразно ли будет его обработать следующим способом?

$formData = ['field1Name' => '', 'field2Name' => ''];
       foreach ($formData as $fieldName => $value) {
           if (isset($_POST[$fieldName])) {
               $formData[$fieldName] = $_POST[$fieldName];
           }
       }
Answer 1

Я бы вам посоветовал использовать функцию array_intersect_key, выглядит более красиво:

$fields = ['field1Name', 'field2Name'];
$formData = array_intersect_key($_POST, array_flip($fields));

Результат будет тот же, но меньше кода.

По поводу вопроса - может ли добавить? Легко, просто меняет исходный код страницы или если через curl - добавляет параметры.

Answer 2

Вопрос безопасности в проекте должен быть реализован более глобально. С таким подходом вы точно где-то допустите ошибку. Пилите проект как угодно, а потом отдельно займитесь безопасностью. Найдите все шлюзы для данных и добавьте валидаторы для того чтобы не допустить попадания в обработку нецелевых данных.

READ ALSO
Выполнение скрипта ajax

Выполнение скрипта ajax

Есть скрипт, нужно при его выполнении выводилось сообщение "Заявка отправлена"и модальное окно закрывалосьСкрипт работает а вот сообщение...

204
Задача. Алгоритм игры

Задача. Алгоритм игры

Есть два игрокаКаждый выбирает "атаку" и "защиту", это может быть: Голова - 1 Живот - 2 Руки - 3 Ноги - 4 Цифры - ID

166
PHP, Формат вывода массива

PHP, Формат вывода массива

Решаю задачки по составлению функций для новичков, которые проверяются по ожидаемым вводным данным с ожидаемыми результатамиВ ожидаемом...

157