Como as chaves de entrada são exploráveis por usuários mal-intencionados?
NoCodeIgniter Framework PHP, existe uma função que roda automaticamente em cada requisição que, entre outras coisas,filtra as chaves do array GET / POST / COOKIEe mata o aplicativo se encontrar caracteres que considere inseguros.
Para evitar que usuários mal-intencionados tentem explorar as chaves, garantimos que as chaves sejam nomeadas apenas com texto alfanumérico e alguns outros itens.
Algo como:
<code>// foreach GET/POST/COOKIE keys as $str... if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str)) { exit('Disallowed Key Characters.'); } </code>
Por exemplo, isso será acionado se você acidentalmente postar algo como<input name="TE$T">
ou ter uma string de consulta como?name|first=1
.
Eu posso ver isso sendo uma boa maneira de reforçar os nomes de chaves do senso comum, ou pegar erros durante o desenvolvimento de um aplicativo, mas eu não entendo: Como um usuário mal-intencionado pode possivelmente "explorar chaves" em$_POST
dados por exemplo? Especialmente desde (eu diria) entradavalores são tão exploráveis, o que isso realmente impede?