Ir para o conteúdo
cristpate

SESSOES EM PHP

Mensagens Recomendadas

cristpate    0
cristpate

alo a todos

eu estou usando sessoes em na minha aplicaçao mas nao esta a funcionar plenamente, isto e, quando termina a sessao e faço back com o botao do windows remete me a pagina que eu estava a visualizar antes de terminar a sessao e isso nao garante a segurnça dos dados

ajudem me

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
edsousa    0
edsousa

acrescenta às páginas no topo

<?php
session_cache_limiter('private');
?>

isto vai obrigar a que o browser mesmo quando se faz back a pedir de novo a página. Assim o teu script pode ver se a sessão é válida ou não e reagir de acordo

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
cristpate    0
cristpate

acrescentei e nao mudou em nada

vou lhe por a par da estrutura da minha aplicaçao:

tenho uma pagina para login onde e validado o nome e a senha verificadas os dois parametros visualiza-se a pagina principal onde tem o botao de logout.

para iniciar a sessao estou a usar somente session_start(); que pus num ficheiro e e requerido pela pagina principal atravez do require e para destruir a sessao uso

session_start();

session_destroy();

header("Location: user_validacao.php");

nao sei se falta alguma coisa?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
edsousa    0
edsousa

Eu faria algo como isto:

Todas as páginas da aplicação (excepto a que trata de iniciar a sessão e a do não autorizado) começariam assim:

<?php
  include('sessaovalida.php');
//...

sessaovalida.php

<?php
session_cache_limiter('private'); //é importante estar antes do session_start
session_start();
if(!isset($_SESSION['sessaovalida']) || $_SESSION['sessaovalida']==0) {
   header('Location: naoautorizado.php');
   exit(0); //terminar mesmo a execução do script, para fazer o redireccionamento
}
?>

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
cristpate    0
cristpate

mas quando ponho esse codigo

ao fazer a validacao, a aplicaçao remete me a pagina a pagina invalido.php

if(!isset($_SESSION['sessaovalida']) || $_SESSION['sessaovalida']==0) {

  header('Location: invalido.php');

  exit(0); //terminar mesmo a execução do script, para fazer o redireccionamento

}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
edsousa    0
edsousa

deve faltar iniciar sessão...

login.php

<?php
session_cache_limiter('private');
session_start();

$user = $_POST['username'];
$pass = $_POST['password'];

/*
  buscar a pass correcta a uma BD, p.ex.
*/

  if($pass==$passCorrecta) {
      $_SESSION['sessaovalida']=1; //ou user_id
      header('Location: paginaaplicação.php');
  }
  else {
      $_SESSION['sessaovalida']=0;
      header('Location: loginfailed.php');
  }
?>

e

logout.php

<?php
session_cache_limiter('private');
session_start();
$_SESSION['sessaovalida']=0;
header('Location: index.html');
?>

e agora descobri uma coisa nova...

da documentação

session_destroy() destroys all of the data associated with the current session. It does not unset any of the global variables associated with the session, or unset the session cookie.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
cristpate    0
cristpate

eu tentei por essa ideia: session_destroy(); um session_unset(); mas nao resultou, mas quando vou a pasta tmp do servidor onde ele guarda os ficheiros das sessoes vejo que quando pressiono o botao para destruir a sessao, o ficheiro desaparece mas vou e faço back com o botao do windows ele volta a me dar acesso a pagina anterior

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
anolsi    16
anolsi

E utilizaste na mesma isto?

session_cache_limiter('private');

E nesse página estás a verificar a sessão?

EDIT: Já agora tens que fazer o unset antes do destroy.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
silvinosilva    0
silvinosilva

Olá,

Estou a ver que estás a utilizar uma variável de sessão para verificar se o utilizador está correctamente autenticado para ver o conteúdo baseado apenas no valor.

Se alguém ver o valor do cookie válido na rede pose utilizar para eludir o sistema. Uma forma simples de aumentar um pouco mais a dificuldade de conseguir acesso sem autorização é guardar o máximo de informação sobre o utilizador a quando do login e confrontar sempre que é validada a sessão.

Fica aqui um exemplo que valida com base no IP e Sessão,

public function valida_sessao(){

    //valida a sessao
    if(isset($_SESSION["uid"])){

        // verifica se ainda existe registo na base de dados desta sessão
        $res=$this->bd->sql("SELECT * FROM utilizador WHERE id='".$_SESSION['uid']."'  AND     
                                        ip='".$_SERVER['REMOTE_ADDR']."' AND sessao='".session_id()."'");

        if($res->nlinhas>0){
            return true;
        }
    }

    return false;

}

Até Já,

Silvino

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade