Ir para conteúdo

Posts Recomendados

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.

 

Observações Importantes:

Utilizar no header das páginas;

Criar diretório acesso na pasta root da aplicação.

 

Função:

function checkCookies()
{
/*
Função desenvolvida por Anderson F R.
Postada no fórum iMasters e XTibia.
*/

/* configurações */
$cookiename = 'm5'; 
$cookievalue = time(); 
$dir = "acesso/";
$maxsec = 10;
/* termina config */


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;			
	}

}
else
{
// arquivo não existente, primeira visita do usuário ao site, criamos o arquivo de log de acesso e um header para o reload da página
$f = fopen($dir.$ip.".txt", "w+");
fwrite($f, time());
fclose($f);
header("Location: #");
return true;
}
}

 

Exemplo de utilização:

if (checkCookies() == true)
{
echo 'Cookie ativado!';
}
else
{
die('Cookie desativado! Por favor, ative o cookie para visualizar nosso site.');
}

 

É importante notificar a todos que a verificação do javascript neste caso é bastante importante também.

 

Abraços, até mais!

Link para o comentário
https://xtibia.com/forum/topic/116181-seguran%C3%A7a-em-sites-verificando-cookies/
Compartilhar em outros sites

  • 2 months later...

vou me dedicar um pouco mais a API e php, quem sabe um dia eu não possa ajuda-lo em algo não é?

se desse eu ajudaria mas preciso estudar muito ainda.

 

Link para o comentário
https://xtibia.com/forum/topic/116181-seguran%C3%A7a-em-sites-verificando-cookies/#findComment-799650
Compartilhar em outros sites

×
×
  • Criar Novo...