Tengo este mensaje de advertencia en Netbeans 7.4 para PHP mientras estoy usando $ _POST , $ _GET , $ _SERVER , ....
No acceda directamente a la matriz Superglobal $ _POST
Qué significa eso? ¿Qué puedo hacer para corregir esta advertencia?
Editar: el código de muestra del evento todavía muestra esta advertencia.
php
netbeans
superglobals
netbeans-7.4
Kannika
fuente
fuente
Respuestas:
filter_input(INPUT_POST, 'var_name')
en lugar de en$_POST['var_name']
filter_input_array(INPUT_POST)
lugar de$_POST
fuente
$name = filter_input(INPUT_POST, $_POST["name"]);
.filter_input(INPUT_POST, 'var_name', FILTER_SANITIZE_NUMBER_INT)
Aunque un poco tarde, me encontré con esta pregunta mientras buscaba la solución para el mismo problema, así que espero que pueda ser de alguna ayuda ...
Me encontré en la misma oscuridad que tú. Acabo de encontrar este artículo, que explica algunas sugerencias nuevas introducidas 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 las superglobales generalmente están llenas de información de usuario, en la que nunca se debe confiar ciegamente. En cambio, se debe hacer algún tipo de filtrado, y eso es lo que sugiere la sugerencia. Filtre el valor superglobal en caso de que tenga algún contenido envenenado.
Por ejemplo, donde tuve:
He puesto en su lugar:
Tienes el documento filter_input y filtros aquí:
http://www.php.net/manual/en/function.filter-input.php
http://www.php.net/manual/en/filter.filters.php
fuente
Estoy de acuerdo con las otras personas que respondieron en 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):
No sería muy útil aplicar higienizante aquí (aunque tampoco rompería nada).
Por lo tanto, siga las recomendaciones, pero no a ciegas; más bien, comprenda por qué son para :)
fuente
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
en vez de
Y use
en vez de
NB: Aplicar a todas las demás variables Super Global
fuente
Aquí hay parte de una línea en mi código que generó la advertencia en NetBeans:
Después de mucha investigación y de ver cómo hay miles de millones de formas de filtrar esta matriz, encontré una que era simple. Y mi código funciona y NetBeans está contento:
fuente