Предупреждение "не обращаться к массиву Superglobal $ POST напрямую" в Netbeans 7.4 для PHP
У меня есть это предупреждение сообщения на Netbeans 7.4 для PHP, пока я использую $_POST, где, переменная$_GET, переменная$_SERVER, ....
не получить доступ к массиву Superglobal $_POST напрямую
Что это значит? Что я могу сделать, чтобы исправить это предупреждение?
изменить: пример кода события по-прежнему показывает это предупреждение.
4 ответов
filter_input(INPUT_POST, 'var_name')
вместо $_POST['var_name']
filter_input_array(INPUT_POST)
вместо $_POST
хотя немного поздно, я столкнулся с этим вопросом при поиске решения для той же проблемы, поэтому я надеюсь, что это может помочь...
https://blogs.oracle.com/netbeansphp/entry/improve_your_code_with_new
причина, по которой он был добавлен, заключается в том, что суперглобалы обычно заполнены пользовательским вводом, которому никогда не следует слепо доверять. Вместо этого должна быть сделана какая-то фильтрация, и это то, что подсказывает подсказка. Отфильтруйте значение superglobal, если оно содержит отравленное содержимое.
например, где у меня было:
$_SERVER['SERVER_NAME']
Я поставил вместо:
filter_input(INPUT_SERVER, 'SERVER_NAME', FILTER_SANITIZE_STRING)
у вас есть filter_input и фильтры doc здесь:
Я согласен с другими ответчиками, что в большинстве случаев (почти всегда) необходимо санировать ваш ввод.
но рассмотрим такой код (он для контроллера REST):
$method = $_SERVER['REQUEST_METHOD'];
switch ($method) {
case 'GET':
return $this->doGet($request, $object);
case 'POST':
return $this->doPost($request, $object);
case 'PUT':
return $this->doPut($request, $object);
case 'DELETE':
return $this->doDelete($request, $object);
default:
return $this->onBadRequest();
}
было бы не очень полезно применять дезинфекцию здесь (хотя это тоже ничего не сломает).
Итак, следуйте рекомендациям, но не слепо, а понять, почему они за :)
просто использовать
filter_input (INPUT_METHOD_NAME, 'var_name') вместо $_INPUT_METHOD_NAME ['var_name'] filter_input_array (INPUT_METHOD_NAME) вместо $_INPUT_METHOD_NAME
Эл.г
$host= filter_input(INPUT_SERVER, 'HTTP_HOST');
echo $host;
вместо
$host= $_SERVER['HTTP_HOST'];
echo $host;
и использовать
var_dump(filter_input_array(INPUT_SERVER));
вместо
var_dump($_SERVER);
N. B: применить ко всем другим супер глобальной переменной