Vulnerabilidade
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
Vulnerabilidade
Professor: Lucena
Aluno: Wildson Fernandes de Souza
Julho de 2011
PHP
Register Globals Apesar de que a diretiva register_globals ter se tornado deprecated no PHP 5 e pretendem remover no PHP 6, é sempre bom falar sobre isso que chegou a causar muita dor de cabeça a algum tempo. Quando essa diretiva encontra-se ligada, o PHP injeta variáveis extras no script como variáveis de requisição do HTML. O problema disso é que o desenvolvedor pode ser inocente ao ponto de não se preocupar que podem haver mudanças no valor dessas variáveis por usuários mal intencionados ou mesmo criar variáveis potencialmente perigosas. Error Reporting Exibir os erros por mais que se tratem apenas de advertências é essencial. É fato de que você nem sempre enxergará todos se não forem mostrados visualmente. Em contrapartida, uma vez que o website está no ar, a exibição de erros deve ser desligada, pois o PHP providencia informações detalhadas que poderão chegar as mãos de um usuário mal intencionado. Escondendo os erros quando o website estiver no ar, porém gravando as mensagens num arquivo de log: error_reporting(E_ALL); ini_set("display_errors","Off"); ini_set("log_errors","On"); ini_set("error_log", "/path/to/error/log"); De maneira alternativa, é possível usar error_reporting(E_ALL | E_STRICT) que funcionaria como um backward compat. Cross-site Scripting (XSS) Talvez a vulnerabilidade mais comum na maioria dos websites. O problema está no desenvolvedor não filtrar os dados de campos de formulários HTML e verificar as possíveis saídas. Por exemplo, temos o seguinte formulário:
O código exibe o seguinte dado: echo $_POST['message']; A vulnerabilidade é devido ao fato de que não há filtragem da entrada e nem o escape da saída de dados. Se alguém escrever no textarea o seguinte código