Потенциальные проблемы безопасности с переменными переменными

Я часто использую следующие строки для упрощения обработки ввода формы.

foreach($_POST as $key => $value){
$$key = $value;
}

Это действительно удобно, потому что вам нужны только строки, и вы получаете все, что вы представляли как переменные, но каждый раз, когда я использую это, я думаю, что что-то упускаю. Есть небольшая опасность, если случайно назвать несколько переменных одинаковыми, но меня больше беспокоит безопасность. Есть ли какой-то способ, чтобы это было уязвимостью в этом отношении? то есть пользователь фабрикует какую-то форму ввода со злонамеренным именем?

0

Решение

Прежде всего, вы можете сделать это с extract, цикл не требуется:

extract($_POST);

Что касается безопасности, конечно, есть проблемы безопасности каждый раз, когда вы используете данные, предоставленные пользователем. Вы хотите дезинфицировать любой пользовательский ввод. Это верно независимо от того, extract вход в локальные переменные или просто использовать $_POST массив.

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

Перенос пользовательских данных в локальные переменные упрощает перезапись предварительно существующей локальной переменной, которую вы настроили (если вы не используете EXTR_SKIP флаг).

Я бы посоветовал против практики.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]