Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cristiano_Ferrari

Controlar carregamento de página

Recommended Posts

Ilustres, bom dia.

 

Estou criando um site que utiliza autenticação/controle de sessão em PHP e, após o sucesso na autenticação, abre sua página prinicipal em uma nova janela, criada pelo método window.open.

 

No código da página a ser carregada nesta janela faço uso do típico controle de sessão do PHP, para evitar que ela seja carregada sem que o usuário tenha passado com sucesso pelo login.

 

Entretanto, uma vez logado, o usuário consegue copiar a URL da página que foi carregada nesta janela e abrí-la na janela/aba da página mãe (onde fez o login) ou em uma nova aba na janela original.

 

Eu gostaria de impor uma restrição, no código javascript desta página que carrego na nova janela (bem como nas demais páginas do site), de modo a evitar que ela seja carregada na janela original (à partir de onde o usuário fez o login), ou em qualquer outra aba/janela que não seja aquela a nova janela criada pelo window.open quando o usuário passou com sucesso pela página de autenticação.

 

É possível se fazer este tipo de controle?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela resposta wbruno.

 

Entretanto, após sua negativa, fui em busca de um caminho para contornar o problema e encontrei uma forma de fazer usando o parâmetro name do método window.open() associada à propriedade name do objeto window.

 

Até então eu fazia a chamada window.open() passando "_blank" para o parâmetro name. Eu simplesmente substitui este valor por uma string que identificasse a janela (ex: "minhajanela"). Então, nas páginas para as quais eu quero restringir o carregamento apenas nesta janela eu incluí o código abaixo entre o </head> e o <body>:

    var windowName = window.name ;
    if ( windowName != "minhaJanela") { 
         window.location.href = "erro.html" ;
         jQuery.ajax({
             type: "POST",
             url: 'logout.php'                 
             }
         });      
    } ;  

O arquivo logout.php, por sua vez, tem o seguinte conteúdo:

<?php
session_start();
session_unset(); 
session_destroy();
?>

Assim, se algum usuário, após efetuar o login com sucesso, tentar abrir a página principal ou qualquer outra página da área restrita fora da nova janela, a página erro.html será carregada em seu lugar e sua sessão será encerrada.

 

Falta dar uma melhorada no código javascript para também encerrar a janela aberta para o acesso restrito antes de chamar logout.php, o que estou providenciando.

 

Eu pensei e criar uma função e chamar este arquivo através das propriedades onload ou onloadstart, mas aí entra em cena a compatibilidade de browsers.

 

Você alguma brecha para o usuário contornar isso (sem falar em coisas mais elaboradas, como um ataque men-in-the-middle, por exemplo)?

 

Att.

 

Cristiano

Compartilhar este post


Link para o post
Compartilhar em outros sites

E se o cara desativar o javascript, já era essa tua solução.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o cara desativar o javascript ele não passa pelo login. O site requer javascript.

 

Fora isso, vê algum outro problema?

 

Ainda não consegui fazer o script fechar a janela. Alguma ideia de como posso fazer isso?

 

[[]]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido. Com não existe relação de precedência entre a janela do site á pagina com tentativa de acesso indevido, a solução foi executar novamente na página aberta indevidamente o método window.open(), passando como parâmetro name o mesmo nome utilizado na abertura anterior.

 

Deste modo a janela aberta passa a ser filha da página aberta indevidamente e pode ser fechada por ela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.