Pergunta

Eu ia usar .htaccess para proteger com senha um diretório para um script php que estou escrevendo, como eu não confio em minhas habilidades PHP para criar um login seguro, mas eu descobri que você não pode usar caminhos relativos para AuthUserFile e Eu não poderia generalizar isso.

Se você poderia me indicar um login script PHP seguro de senha proteger um diretório, eu ficaria muito grato. Obrigado.

Foi útil?

Solução

Uma coisa que você pode fazer é manter todos os seus arquivos "secretas" em um fora do diretório de webroot do servidor. Todo o acesso a esses arquivos podem então ser encaminhado através de um único script PHP dentro de seu diretório. Algo parecido com isto:

http: //www.example. com / protegido por diretório / access.php? file = / foo / document.doc

Com uma estrutura de diretórios como esta:

+--+ /server_root
   |
   +--+ /web_root
   |  |
   |  +--+ /protected-directory
   |     +-- access.php
   |     +-- access-denied.html
   |
   +--+ /protected_root
      |
      +--+ /foo
         +-- document.doc

Em seu access.php você faria algo assim:

$file = $_REQUEST['file'];
if ($user->hasAccessTo($file)) {
    readfile("/server_root/protected_root/$file");
} else {
    readfile('access-denied.html');
}

Agora, você tem que ter cuidado que você tenha certeza parafusos ninguém com o seu file-parâmetro e passa algo ao longo como "../../../etc/passwd". Além disso, você provavelmente vai querer certificar-se de que você enviar os cabeçalhos corretos no exemplo acima, eu omitido que, por razões de clareza.

Outras dicas

Você pode usar caminhos absolutos ao AuthUserFile, e organizar para colocar esse arquivo em um local não acessível ao servidor web. Eu tenho feito isso por muitos anos. Funciona bem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top