TeHospedo

www.TeHospedo.com.br

TeHospedo - Serviços de Internet
TeHospedia

Vulnerabilidade função mail

De TeHospedia

Existe uma característica da função mail() do PHP que é também uma vulnerabilidade. O terceiro parâmetro da função é o parâmetro usado para acrescentar header no email.

Para acrescentar mais do que um header, se utiliza uma quebra de linha. E é esse o problema. Através de um formulário é possível acrescentar uma quebra de linha e inserir novos headers. Pelo navegador, dadas as características do campo <input type="text"> isso nem sempre é possível, porém um usuário avançado pode utilizar outras técnicas para acrescentar quebra de linhas e injetar headers.

Na prática o que ocorre é o uso de formulários para enviar email para outros destinatários.

Todos os usuários de nossos servidores devem usar o código abaixo para impedir o uso de seus formulários para fins não autorizados.

Basta validar com a função checkheader() abaixo, todas variáveis que são usadas na formação do terceiro parâmetro da função mail().

<?php
/** validacao de header da funcao mail() - Por TeHospedo.com.br
* se houver quebra de linha no parametro passado, o script
* encerra
*/

function checkheader($t) {
  $t = urldecode($t);
  if (eregi("\r", $t) || eregi("\n", $t)) die("Erro fatal.");
}

// validando a informacao fornecida pelo usuario do site no campo email 
checkheader($_REQUEST['email']);

// validando a informacao fornecida pelo usuario do site no campo nome 
checkheader($_REQUEST['nome']);

// construindo o header FROM com o informado no email e nome do formulario
$from = sprintf('From: "%s" <%s>', $_REQUEST['nome'], $_REQUEST['email']);

// qualquer variavel fornecida pelo usuario que chegue ate o terceiro parâmetro
// da função mail() deve ser verificada com o checkheader()

mail('usuario@dominio.com.br', 'Teste', $from);

?>
Ferramentas pessoais
Relacionamento
Está página foi modificada pela última vez em 00:06, 26 Fevereiro 2007. - Esta página foi acessada 838 vezes. - Sobre a TeHospedia
 
Capa Empresa Mapa do site Política de uso Infra-estrutura Trabalhe conosco