Conheça o Plugfeed | » Início » Programação » PHP » Se protegendo contra roubo de sessões
Conheça o Plugfeed | » Início » Programação » PHP » Se protegendo contra roubo de sessões -->
 
Avaliação: | Publicado em: 05/03/2008
Se protegendo contra roubo de sessões
Gabriel Sobrinho Programador
Se protegendo contra roubo de sessões

Muitos já devem ter ouvido falar sobre roubo de sessões. Vou exemplificar um roubo de SID:

Usuário: "Tava vendo esse tópico nesse fórum e gostei... Dá uma olhada:"
http://meuforum.com/topic-2.html?PHPSESSID=a5e8a5e8f2c5d"
Considere que o usuário que postou o link estava logado no fórum e quem acessou, acessou num pequeno intervalo de tempo. Quem acessar vai ficar logado na conta do usuário que postou o link... É lógico que todos os fóruns hoje tem proteção contra isso, isso foi só um exemplo.

A lógica é bem simples:

1. Configurar o tempo de sessão para 1 hora (Padrão do php: 3 horas);
2. Configurar os cookies de sessão para não serem acessados via JS (Ataques XSS);
3. Configurar o php para não recuperar sessões via URL (Exemplo acima);
<?php
// Iniciamos a sessão.
@ini_set('session.cache_expire', 60);
@ini_set('session.cookie_httponly', true);
@ini_set('session.use_only_cookie', );

session_start();
?>
Caso o servidor não aceite ini_set, os erros serão ocultos pelo @. Também fazemos outra proteção que verifica se foi digitada uma id de sessão na URL. Se tiver, nós destruímos a sessão e geramos outra id para a seção.
<?php
if(strpos(strtolower($_SERVER['REQUEST_URI'])
, 'phpsessid') !== >false)
{
session_destroy();
session_regenerate_id();
session_start();
}
?>
Ficando assim nosso script final:
<?php
// Iniciamos a sessão.
@ini_set('session.cache_expire', 60);
@ini_set('session.cookie_httponly', true);
@ini_set('session.use_only_cookie', );

session_start();

if(strpos(strtolower($_SERVER['REQUEST_URI']),
'phpsessid') !== >false)
{
session_destroy();
session_start();
session_regenerate_id();
}
?>

Roubo de sessão via url agora está bloqueado, porém existem outros tipos de roubo de sessão, como por exemplo via XSS que é mais complicado de exemplificar.

Então fica aí a dica, abraços!

valeu cara eu sabia desse tal roubo mas não tinha me animado a ir atras ainda








Um produto Detetive.net