Jump to content


Photo

Como Se Defender De Email Enviados Em Massa.


  • Faça o login para participar
4 replies to this topic

#1 crawler

crawler

    Novato no fórum

  • Usuários
  • 8 posts
  • Sexo:Não informado

Posted 03/08/2009, 16:47

Tenho um formulário de contato que envia e-mail para os setores de uma empresa, porem hoje este script foi atacado e foi enviado mais de 500 e-mails para cada setor da empresa.

Script
[codebox]<? ob_start();
include("conexao.php");
include("scripts.php");

// ENVIANDO MENSAGEM
if(sizeof($_POST['salvar'])){
$setor = $_POST['escolha_setor']; //escolhe o setor e manda o email para a variavel $email
switch ($setor):
case 'comercial':
$email = "setor1@email.com.br";
break;
case 'administrativo':
$email = "setor2@email.com.br";
break;
case 'financeiro':
$email = "setor3@email.com.br";
break;
case 'recursos_humanos':
$email = "setor4@email.com.br";
break;
default:
$email = "rafael-august@bol.com.br";
break;
endswitch;

$estado = $_POST['estado'];


// ENVIANDO MENSAGEM
$from = "comercial@email.com.br";
$to = $email;
$headers = "\nContent-type: text/html; charset=iso-8859-1\r\n";
$assunto = "Contato pelo site Empresa";
$mensagem = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">";
$mensagem .= "<html xmlns=\"http://www.w3.org/1999/xhtml\">";
$mensagem .= "<head>";
$mensagem .= "<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" />";
$mensagem .= "<title>Empresa</title>";
$mensagem .= "</head>";
$mensagem .= "<body>";
$mensagem .= "Nome: ". $_POST['nome'] ."<br />";
$mensagem .= "E-mail: ". $_POST['mail'] ."<br />";
$mensagem .= "Cidade: ". $_POST['cidade'] ."<br />";
$mensagem .= "Estado: ". nome_estado($estado) ."<br />";
$mensagem .= "Telefone: ". $_POST['tel'] ."<br />";
$mensagem .= "Mensagem:<br />". str_replace(chr(13), '<br />', utf8_decode($_POST['mensagem'])) ."<hr />";
$mensagem .= "Enviado em: ". date("d/m/Y", data()) ."<br />";

mail($to, $assunto, $mensagem, "from: ". $from . $headers);
header("Location:fale.php?erro=1");

//echo '<meta HTTP-EQUIV="Refresh" CONTENT="1; URL=http://empresa.com.br/fale.php?erro=1">';
ob_end_flush();
}

?>
[/codebox]

Por favor
Eu quero proteger este script contra este tipo de ataque.

#2 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 04/08/2009, 09:13

utilize alguma proteção Captcha!

São aqueles caracteres que confirmam se vc é uma pessoa ou não antes de enviar!

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#3 crawler

crawler

    Novato no fórum

  • Usuários
  • 8 posts
  • Sexo:Não informado

Posted 04/08/2009, 11:08

Otima ideia.

#4 Tonini

Tonini

    12 Horas

  • Usuários
  • 130 posts
  • Sexo:Masculino

Posted 04/08/2009, 11:54

Uma ideia:

Não seria possivel criar uma página HTML chamando a pagina de envio de e-mails, tornando essa proteção inutil?
CalvinBall.
Any player may declare a new rule at any point in the game.
The player may do this audibly or silently...

#5 dddidan

dddidan

    Ativo

  • Usuários
  • 381 posts
  • Sexo:Masculino
  • Localidade:Taboão da Serra - SP

Posted 04/08/2009, 12:13

Vc pode criar um filtro de tempo, por exemplo:
Assim que o usuário enviar o e-mail, vc salva a data e a hora no BD.
Quando o mesmo usuário for mandar o e-mail, vc puxa do BD a ultima vez que a pessoa enviou um e-mail.
se o intervalo for maior ou igual a 30 segundos (ai vc decide o tempo), o programa envia, senão exibe na tela: "Filtro anti spam aivado. você precisa aguardar 30 segundos para enviar outro e-mail."

Ai, com criatividade vc pode deixar mais bonitinho, colocando uma contagem regressiva do tempo, etc, etc.
Mais vale um Dev C++ na mão do que dois codeblocks voando

PHP - ||||||||||||||| MySql - |||||||||||||||
C/C++ - ||||||||||||||| Oracle - |||||||||||||||
PERL - |||||||||||||||




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq