Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17677
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Como tornar uma SESSION PHP mais segura

22-10-2016 11:27

Nesse post vou dar uma dica de como tornar uma SESSION mais segura.

Para tornar a SESSION mais segura alguns valores únicos referente ao acesso precisam ser armazenados e comparados com valores atuais do acesso do usuário.

Para o script será armazenado quando a SESSION for criada:

- id da session
- tempo que a session demora até expirar
- IP do usuário
- navegador do usuário
- host do servidor que o script está rodando


O primeiro passo é salvar os dados da SESSION. Isso geralmente é feito nos sistemas assim que o usuário entrar com as informações corretas, ou seja, quando os dados de login do formulário baterem com os dados salvos no banco de dados.

Sendo assim essa parte de criação da SESSION deve ser colocada logo após a validação correta do seu sistema.

Para você testar o script vou dividir em 3 partes "3 arquivos PHP.

teste1.php - onde é criado a SESSION

<?php // ESSE TRECHO VAI NO TOPO DO DOCUMENTO session_start(); function CriaSession($segundos) { $id_da_session = session_id(); $_SESSION['ID_DA_SESSION'] = $id_da_session; $_SESSION['TEMPO_DA_SESSION'] = time() + $segundos; $_SESSION['IP_DA_SESSION'] = $_SERVER['REMOTE_ADDR']; $_SESSION['HTTP_USER_AGENT_DA_SESSION'] =$_SERVER['HTTP_USER_AGENT']; $_SESSION['HTTP_HOST_DA_SESSION'] = $_SERVER['HTTP_HOST']; } // ESSE TRECHO VAI NO TOPO DO DOCUMENTO ?> <?php // ESSE TRECHO VAI LOGO APÓS A VALIDAÇÃO DOS DADOS DE LOGIN COM O BANCO DE DADOS // TEMPO DE DURAÇÃO DA SESSION EM SEGUNDOS CriaSession(60); ?>

teste2.php - um dos documentos do seu sistema que precisa ser protegido
Esse arquivo faz a validação do dados da SESSION se existem. Também verifica se o tempo da SESSION já expirou

<?php session_start(); $id_da_session = session_id(); if(isset($_SESSION['ID_DA_SESSION']) && isset($_SESSION['TEMPO_DA_SESSION']) && isset($_SESSION['IP_DA_SESSION']) && isset($_SESSION['HTTP_USER_AGENT_DA_SESSION']) && isset($_SESSION['HTTP_HOST_DA_SESSION'])) { if($_SESSION['ID_DA_SESSION'] != $id_da_session) { echo "O ID da SESSION é diferente do ID atual"; exit; } if($_SESSION['TEMPO_DA_SESSION'] < time()) { echo "o tempo da session expirou"; exit; } if($_SESSION['IP_DA_SESSION'] != $_SERVER['REMOTE_ADDR']) { echo "O IP da SESSION é diferente do IP atual"; exit; } if($_SESSION['HTTP_USER_AGENT_DA_SESSION'] != $_SERVER['HTTP_USER_AGENT']) { echo "O navegador da SESSION é diferente do navegador atual"; exit; } if($_SESSION['HTTP_HOST_DA_SESSION'] != $_SERVER['HTTP_HOST']) { echo "O HOST da SESSION é diferente do HOST atual"; exit; } } else { echo "SUA SESSION NÃO É VÁLIDA"; exit; } ?> CONTEÚDO PROTEGIDO

teste3.php - Esse arquivo seria o logout, ou seja, onde todos os dados da SESSION serão eliminados.

<?php session_start(); unset($_SESSION['ID_DA_SESSION']); unset($_SESSION['TEMPO_DA_SESSION']); unset($_SESSION['IP_DA_SESSION']); unset($_SESSION['HTTP_USER_AGENT_DA_SESSION']); unset($_SESSION['HTTP_HOST_DA_SESSION']); session_destroy(); session_start(); ?>

Como esse script é de teste, você verá as mensagens sendo exibidas de acordo com as ações, mas é interessante se for usar o script trocar as mensagens de textos por redirecionamentos do usuário para outro arquivo, por exemplo a página de login ou logout.

// troca echo "o tempo da session expirou"; //por header("location:logout.php");

0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado