Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom, com o tanto de invasões e spams em grandes comunidades e sites por aí, resolvi dar uma pesquisada em segurança. Foi então que percebi em diversos sites a falta de checagem de cookies, inclusive nos meus, e isto é uma grande falha quando se usa session e cookies para guardar informações do usuário.
Para tanto, eu fiz uma função provisória em PHP para a checagem do mesmo. O único problema da função é um intervalo existente quando se ativa/desativa cookies, tem que esperar 10 segundos para o script conseguir identificar novamente se está ativo ou não.
<b>Observações Importantes:</b>
Utilizar no header das páginas;
Criar diretório <b>acesso</b> na pasta root da aplicação.
<b>Função:</b>
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->function checkCookies()
{
/*
Função desenvolvida por Anderson F R.
Postada no fórum iMasters.
*/
/ configurações /
$cookiename = 'm5';
$cookievalue = time();
$dir = "acesso/";
$maxsec = 10;setcookie($cookiename, md5($cookievalue)); // adiciona cookie
// verifica se o valor do cookie é igual
$i = 0;
while ($i <= $maxsec)
{
$value = time()-$i;
if ($_COOKIE[$cookiename] == md5($value))
{
return true;
break;
}
$i++;
}
// verifica se existe diretório de acesso
if(!is_dir($dir))
die("Erro! Diretório ".$dir." não existe.");
// verifica a última visita do usuário
$ip = $_SERVER['REMOTE_ADDR'];
if (file_exists($dir.$ip.".txt"))
{
$lastvisit = file_get_contents($dir.$ip.".txt");
$lastvisit = (int) $lastvisit;
$diferenca = time()-$lastvisit;
if ($diferenca <= $maxsec)
{
// arquivo existente, acabou de visualizar o site, cookie não inserido... desativado!
$f = fopen($dir.$ip.".txt", "w+");
fwrite($f, time());
fclose($f);
return false;
}
else
{
// arquivo existente, visualizou o site há algum tempo, necessário checar novamente.
$f = fopen($dir.$ip.".txt", "w+");
fwrite($f, time());
fclose($f);
return true;
}
} $f = fopen($dir.$ip.".txt", "w+");
fwrite($f, time());
fclose($f);
header("Location: #");
return true;
}
}<!--c2--></div><!--ec2-->
<b>Exemplo de utilização:</b>
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->if (checkCookies() == true) echo 'Cookie ativado!';
} die('Cookie desativado! Por favor, ative o cookie para visualizar nosso site.');
}<!--c2--></div><!--ec2-->
<b>É importante notificar a todos que a verificação do javascript neste caso é bastante importante também.</b>
Abraços, até mais!
Carregando comentários...