php netbeans superglobals netbeans-7.4

Advertencia "No acceda a Superglobal $_POST Array Directly" en Netbeans 7.4 para PHP



superglobals netbeans-7.4 (4)

Tengo este mensaje de advertencia en Netbeans 7.4 para PHP mientras estoy usando $ _POST , $ _GET , $ _SERVER , ....

No acceda directamente a Superglobal $ _POST Array

Qué significa eso? ¿Qué puedo hacer para corregir esta advertencia?

Editar: El código de muestra del evento aún muestra esta advertencia.


Aunque es un poco tarde, me he encontrado con esta pregunta mientras buscaba la solución para el mismo problema, así que espero que pueda ser de ayuda ...

Me encontré en la misma oscuridad que tú. Acabo de encontrar este artículo, que explica algunos consejos nuevos introducidos en NetBeans 7.4, incluido este:

https://blogs.oracle.com/netbeansphp/entry/improve_your_code_with_new

La razón por la que se ha agregado es porque los superglobales generalmente se llenan con la entrada del usuario, que nunca debería ser ciegamente confiable. En su lugar, se debe hacer algún tipo de filtrado, y eso es lo que sugiere la sugerencia. Filtra el valor superglobal en caso de que tenga contenido envenenado.

Por ejemplo, donde tuve:

$_SERVER[''SERVER_NAME'']

He puesto en su lugar:

filter_input(INPUT_SERVER, ''SERVER_NAME'', FILTER_SANITIZE_STRING)

Usted tiene el filtro de entrada y los filtros aquí:

http://www.php.net/manual/en/function.filter-input.php

http://www.php.net/manual/en/filter.filters.php


Estoy de acuerdo con los otros respondedores que en la mayoría de los casos (casi siempre) es necesario desinfectar su entrada.

Pero considere ese código (es para un controlador 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(); }

No sería muy útil aplicar desinfección aquí (aunque tampoco rompería nada).

Por lo tanto, siga las recomendaciones, pero no ciegamente, más bien, comprenda por qué son para :)


Solo usa

filter_input (INPUT_METHOD_NAME, ''var_name'') en lugar de $ _INPUT_METHOD_NAME [''var_name''] filter_input_array (INPUT_METHOD_NAME) en lugar de $ _INPUT_METHOD_NAME

p.ej

$host= filter_input(INPUT_SERVER, ''HTTP_HOST''); echo $host;

en lugar de

$host= $_SERVER[''HTTP_HOST'']; echo $host;

Y use

var_dump(filter_input_array(INPUT_SERVER));

en lugar de

var_dump($_SERVER);

NB: aplicar a todas las demás variables Super Global


filter_input(INPUT_POST, ''var_name'') lugar de $_POST[''var_name'']
filter_input_array(INPUT_POST) lugar de $_POST