proteção de senha diretório seguro sem .htaccess
-
06-09-2019 - |
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.
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.