0

Segurança: Autenticando o PHP com HTTP (Authentication Required)

criado por leo genilhu em 21/12/2005 6:39am
Como funciona ?
Quando o PHP esta compilado como modulo do apache é possível usar a função nativa que envia uma janela de entrada "Authentication Required" ao servidor web, que por sua vez requisitará ao browser do cliente uma tela de diálogo de entrada para usuário e senha. Assim que o usuário preencher seu login e senha, a URL contendo o script PHP será chamada de novo com as variáveis PHP_AUTH_USER, PHP_AUTH_PW, e AUTH_TYPE.
Estas variáveis contém o login, senha e tipo de autenticação, sendo esta uma informação muito importante para nosso script de validação.
Estas informações são enviadas respectivamente nessa ordem para o servidor. A partir dai essas variáveis pré-definidas são achadas nos arrays e $HTTP_SERVER_VARS.

Obs: $_SERVER é um array contendo informações como headers com caminhos e localizações do script etc. A variável $_SERVER foi introduzida a partir da versão 4.1.0 . Os itens deste array são criados pelo servidor web. Não há garantias que todos os servidores web geram geram estas variáveis alguns servidores são configurados para omitem esta variável.

Veja um exemplo de código:

<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="Minha intranet"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Operação cancelada! Você não logou!!';
    exit;
} else {
    echo "<p>Olá, {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>Sua senha é : {$_SERVER['PHP_AUTH_PW']}.</p>";
}
?>

Comentários:

Mostrando 1 - 10 de 10 comentários
leo_genilhu, desculpe a pergunta ignorante, mas como apago a sessão que está sendo usada para a autenticação, testei algumas maneiras e não obtive sucesso, se puder postar o código correto fico muito agradecido.

Abraço.
08/02/2006 3:45am (~18 anos atrás)

leo genilhu disse:
Ola Clrgomes,

para fazer um logou vc nao precisar necessariamente fechar o browser, na verdada por esse caminha vc nunca garantira segurança na aplicação. A forma correta eh apagar a sessão que esta sendo usada para autenticação.

um abraço
03/02/2006 6:24am (~18 anos atrás)

Legal, mas gostaria de criar um logout sem fechar o navegador, como posso fazer isso?

Cassio
01/02/2006 8:38am (~18 anos atrás)

Como posso fazer um codigo para LOGOUT neste codigo exibido.
Obrigado
CLRGomes
19/01/2006 4:02am (~18 anos atrás)

mto bom simplificou em vez de termos que ficar botando essas configs no apache é só por no php e ja era =D, valeu cara mto bom
17/01/2006 5:03pm (~18 anos atrás)

thiago disse:
eu tb tava kerendo saber como faz isso! eu keria autenticar atraves da pag principal sem temq aparecer akela janelinha!
14/01/2006 2:42am (~18 anos atrás)

Só funciona no meu site? em localhost dá pau?
11/01/2006 6:09am (~18 anos atrás)

..blz, mas de posse dos dados como passo eles para o servidor http (apache) para que ele não requisite o login exibindo a janelinha?
09/01/2006 11:10am (~18 anos atrás)

leo genilhu disse:
Ola asclows,

Voce pode usar o PHP para ler os arquivo .password e autenticar os seus usuarios.

um Abraço
06/01/2006 5:56am (~18 anos atrás)

Por exemplo, tenho uma pasta está protegida por senha (permissões no arquivo .htaccess) e gostaria de aproveitar os dados de login do usuário que já estão gravadas em uma sessão php para autenticar o acesso à pasta ao invés de lançar a tela de login do browser que é exibida quando a pasta é protegida.

Não sei se expliquei direito, mas é simples, ao invés de requisitar a autenticação pra acessar os arquivos do diretório, o acesso será liberado pq o php repassará os dados da sessão do usuário e a autenticação para a pasta protegida será transparente ao usuário.

Tem jeito?
05/01/2006 10:46am (~18 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)