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

Um dos modos muito seguros para fazer autenticação de usuário em uma área restrita é usando a autenticação HTTP. Essa autenticação só é possível para os PHPs que estão compilados como módulos do Apache. Aqui vamos ver as vantagens e os perigos deste tipo de autenticação.

[ Hits: 31.367 ]

Por: leo genilhu em 15/03/2006


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



Um dos modos muito seguros para fazer autenticação de usuário em uma área restrita é usando a autenticação HTTP. Essa autenticação só é possível para os PHPs que estão compilados como módulos do Apache. Vamos ver as vantagens e os perigos desta autenticação.

Como funciona?
Quando o PHP está compilado como módulo do Apache, é possível usar a função nativa que envia uma janela de entrada "Authentication Required" ao servidor web, que por sua vez requisita 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 nome de usuário, 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 daí 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>";
  }
?>
    Próxima página

Páginas do artigo
   1. Segurança: Autenticando o PHP com HTTP (Authentication Required)
   2. Analisando o código
   3. Informações importantes
Outros artigos deste autor

PHP: Programando com segurança

Fazendo sua conexão remota por SSH mais segura

Sistema de identificação em rede (NIS)

Criando backup do MySQL com o mysqldump

Leitura recomendada

Pentesting on PHP apps: XSS

Dados sensíveis em arquivos com extensão .inc

PHP: Programando com segurança

Autenticação de sites com PHP e MySQL

Criptografia do método GET no PHP

  
Comentários
[1] Comentário enviado por femars em 04/09/2008 - 19:44h

olha, opnião minha mas, uma coisa é pesquisar numa fonte outra e copiar exatamente da fonte... tá exatamente igual no manual do php http://docs.php.net/manual/pt_BR/features.http-auth.php


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts