Recebi esta mensagem de aviso no Netbeans 7.4 para PHP enquanto estou usando $ _POST , $ _GET , $ _SERVER , ....
Não acesse Superglobal $ _POST Array diretamente
O que isso significa? O que posso fazer para corrigir esse aviso?
Editar: o código de amostra do evento ainda mostra esse aviso.
php
netbeans
superglobals
netbeans-7.4
Kannika
fonte
fonte
Respostas:
filter_input(INPUT_POST, 'var_name')
em vez de em$_POST['var_name']
filter_input_array(INPUT_POST)
vez de$_POST
fonte
$name = filter_input(INPUT_POST, $_POST["name"]);
.filter_input(INPUT_POST, 'var_name', FILTER_SANITIZE_NUMBER_INT)
Embora um pouco tarde, me deparei com esta pergunta enquanto procurava a solução para o mesmo problema, então espero que possa ser de alguma ajuda ...
Encontrei-me na mesma escuridão que você. Acabei de encontrar este artigo, que explica algumas novas dicas introduzidas no NetBeans 7.4, incluindo esta:
https://blogs.oracle.com/netbeansphp/entry/improve_your_code_with_new
A razão pela qual foi adicionado é porque as superglobais geralmente são preenchidas com entradas do usuário, que nunca deveriam ser cegamente confiáveis. Em vez disso, algum tipo de filtragem deve ser feito, e é isso que a dica sugere. Filtre o valor superglobal caso ele tenha algum conteúdo envenenado.
Por exemplo, onde eu tinha:
Eu coloquei em vez disso:
Você tem o documento filter_input e filtros aqui:
http://www.php.net/manual/en/function.filter-input.php
http://www.php.net/manual/en/filter.filters.php
fonte
Concordo com os outros respondentes que na maioria dos casos (quase sempre) é necessário higienizar sua entrada.
Mas considere esse código (é para um controlador REST):
Não seria muito útil aplicar higienização aqui (embora também não quebrasse nada).
Portanto, siga as recomendações, mas não cegamente - entenda por que elas são a favor :)
fonte
Apenas use
filter_input (INPUT_METHOD_NAME, 'var_name') em vez de $ _INPUT_METHOD_NAME ['var_name'] filter_input_array (INPUT_METHOD_NAME) em vez de $ _INPUT_METHOD_NAME
por exemplo
ao invés de
E use
ao invés de
NB: Aplicar a todas as outras variáveis Super Global
fonte
Aqui está parte de uma linha em meu código que trouxe o aviso no NetBeans:
Depois de muita pesquisa e ver como existem zilhões de maneiras de filtrar esse array, descobri um que era simples. E meu código funciona e o NetBeans está feliz:
fonte