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í:
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