Tutorial - Proteger um diretório ou a interface de administração do seu website por ficheiros .htaccess e .htpasswd

Ver como Markdown

Descubra como proteger um diretório ou o acesso à administração do seu website através de uma autenticação com os ficheiros .htaccess e .htpasswd

Objetivo

Este tutorial explica como implementar uma autenticação "utilizador/palavra-passe" para aceder a todo ou parte do seu website através de um browser.

Isto utilizando dois ficheiros de configuração (HTTP) Apache que pretende colocar no espaço FTP do seu alojamento Web:

Informações sobre a administração dos serviços OVHcloud e como encontrar a assistência adequada

Ao utilizar os guias da OVHcloud, tenha em conta as seguintes condições:

  • As instruções procuram fornecer o máximo de detalhes possível, mas não podem abranger todos os casos de utilização individuais. Poderá ser necessário adaptar as ações descritas às suas necessidades.
  • O ecossistema OVHcloud foi concebido para oferecer flexibilidade e liberdade de escolha. Os clientes são, por isso, responsáveis pela configuração correta e segura dos seus serviços. Para evitar a perda de dados, recomendamos vivamente a aplicação de estratégias de cópia de segurança a todos os seus dados importantes.
  • Os nossos guias e tutoriais podem fazer referência a software ou serviços de terceiros em combinação com as soluções OVHcloud. O suporte técnico fornecido pela OVHcloud não inclui a configuração de sistemas ou produtos fora da nossa responsabilidade. Isto inclui, entre outros:
    • Sistemas operativos e interfaces de utilizador (Windows, Debian, Plesk, etc.).
    • Qualquer outro software de terceiros (clientes FTP, software de e-mail, etc.).
    • Serviços oferecidos por outros fornecedores (DNS, API, interfaces de utilizador, etc.).

Para receber a assistência adequada em caso de problemas, siga estas orientações:

  • Procura aconselhamento personalizado ou pretende discutir um tema que não é abordado em detalhe na nossa documentação?
    Junte-se à comunidade OVHcloud para pesquisar o seu tema e falar com outros utilizadores.
  • Precisa de comunicar um incidente relativo ao seu serviço OVHcloud ou tem dificuldades na Área de Cliente OVHcloud?
    Crie um pedido de suporte no nosso Centro de Ajuda.
  • Necessita de assistência profissional para o seu projeto ou de ajuda com tarefas fora do âmbito do nosso suporte?
    Visite o nosso portal de parceiros para encontrar especialistas familiarizados com as soluções OVHcloud.
  • Procura informações mais detalhadas sobre os nossos níveis de suporte e Professional Services?
    Visite as nossas páginas web sobre os níveis de suporte OVHcloud e os OVHcloud Professional Services.

Pode participar na melhoria da nossa documentação:

  • Pretende partilhar comentários para melhorar uma página de guia ou comunicar informações insuficientes numa página específica?
    Utilize os botões «Esta página foi útil?» no final da página para nos informar.
  • Pretende propor uma atualização concreta da documentação?
    Utilize a função «Editar esta página», disponível no final da página e na barra lateral.

Descubra como proteger um diretório ou o acesso à parte administrador do seu website através de uma autenticação com os ficheiros ".htaccess" e ".htpasswd".

Requisitos

Instruções

Info

A solução de segurança aqui proposta é apenas uma possibilidade técnica entre outras.

Tenha em conta, por exemplo, que se utilizar um Content Management System (CMS), existem outras soluções de segurança.

Se utilizar um CMS Wordpress, a OVHcloud também disponibiliza um tutorial sobre como utilizar o ficheiro htaccess com WordPress.

Para qualquer questão relativa à criação, utilização ou programação do seu website, o suporte da OVHcloud não poderá ajudá-lo nestas questões.

Para isso, contacte a nossa comunidade de utilizadores ou os nossos parceiros OVHcloud.

Vamos explicar-lhe as 4 etapas principais a realizar para proteger o acesso a um diretório ou a totalidade ou parte do seu website:

  • Criar ficheiros "crypt.php", "htaccess" e "htpasswd";
  • Gerar palavras-passe encriptadas com o ficheiro "crypt.php";
  • Definir utilizadores e passwords encriptados com o ficheiro ".htpasswd";
  • Configurar regras no ficheiro ".htaccess" e suprimir o ficheiro "crypt.php".
Warning

Os passos que se seguirão irão otimizar a segurança dos seus dados alojados. Assim, e se os seus websites forem compatíveis, recomendamos vivamente que utilize a versão de PHP mais recente possível.

Para alterar a versão de PHP dos seus websites no seu alojamento web, consulte o guia "Alojamento web: ambiente, versão PHP, .ovhconfig".

De facto, os scripts e informações descritas abaixo neste tutorial apenas funcionam com um ambiente de execução e uma versão PHP recente.

Caso contrário, recomendamos que otimize o seu website para o tornar compatível antes de implementar o que se segue. Isto reduzirá ainda mais os riscos de pirataria de dados através de falhas de segurança.

Etapa 1: criar os ficheiros "crypt.php", "htaccess" e "htpasswd"

Ligue-se ao espaço de armazenamento FTP do seu alojamento web. Abra a "pasta raiz" para a qual aponta o seu domínio.

Crie um ficheiro "crypt.php" nesta "pasta raiz".

Abra ou crie a pasta destinada a ser protegida do seu website. No nosso exemplo, trata-se do dossier "admin". Crie neste diretório um ficheiro ".htpasswd" e um ficheiro ".htaccess".

Para utilizar corretamente os ficheiros ".htaccess" e ".htpasswd", deve conhecer e respeitar as seguintes regras:

  • um único ficheiro ".htaccess" e um único ficheiro ".htpasswd" por diretório ou sub-diretório, para evitar os conflitos entre diferentes ficheiros ".htaccess" e diferentes ".htpasswd";
  • os ficheiros ".htaccess" e ".htpasswd" são invisíveis para os internautas que visitam o seu website;
  • as regras declaradas num ficheiro ".htaccess" aplicam-se a todo o diretório onde o ficheiro ".htaccess" está instalado, bem como a todos os subdiretórios desse mesmo diretório;
  • os ficheiros ".htpasswd" e ".htaccess" podem estar em pastas diferentes. Apenas pode ser utilizado um ficheiro ".htpasswd" para vários ".htaccess".

Etapa 2 : completar o ficheiro "crypt.php"

Volte para a pasta raiz onde criou o ficheiro "crypt.php". Clique em Editer e coloque as seguintes linhas:

<?php
$string = password_hash("plain_text_password", PASSWORD_BCRYPT);

echo nl2br("$string");
 ?>

Substitua apenas plain_text_password pela palavra-passe em claro que deseja encriptar.

Pode adaptar o script em função do número de palavras-passe que deseja encriptar.

  • Exemplo em que o script PHP vai encriptar 3 palavras-passe numa única operação:
<?php
$string_1 = password_hash("plain_text_password1", PASSWORD_BCRYPT);
$string_2 = password_hash("plain_text_password2", PASSWORD_BCRYPT);
$string_3 = password_hash("plain_text_password3", PASSWORD_BCRYPT);

echo nl2br("$string_1 \n $string_2 \n $string_3");
 ?>

Substitua apenas plain_text_password1, plain_text_password2 e plain_text_password3 pelas palavras-passe em claro que deseja encriptar.

Info

Os dois scripts acima utilizam, na data, o método de encriptação mais seguro com recurso ao algoritmo bcrypt recomendado pelo Apache.

Para mais informações sobre o assunto, consulte a documentação oficial Apache.

Se dispõe de um alojamento Pro, Performance, Agency, Agency Plus ou Agency Max, aceda em SSH ao seu alojamento web. Desça à "pasta raiz" onde está o script "crypt.php".

Para isso, utilize o seguinte comando SSH:

cd Name_of_your_root_folder

Substitua Name_of_your_root_folder pelo nome da sua "pasta raiz" para descer onde fica o script "crypt.php".

Se, por exemplo, o seu ficheiro "crypt.php" estiver numa subpasta da sua "pasta raiz", utilize o seguinte comando SSH:

cd Name_of_your_root_folder/sub_folder

Substitua Name_of_your_root_folder pelo nome da sua "pasta raiz" e sub_folder pela sub-pasta onde está o script "crypt.php".

Quando estiver presente no nível onde está o script "crypt.php", execute o seguinte comando:

php crypt.php
Warning

Por razões de segurança, recomenda-se a utilização de SSH. No entanto, se dispõe de uma oferta Starter, Perso ou Startup em que o SSH está indisponível, também pode executar o ficheiro "crypt.php" através do seu browser.

Para isso, introduza o seguinte URL: https://domain.tld/crypt.php para alterar o seu domain.tld. Isto diretamente na barra de endereço do seu browser.

Obtenha as palavras-passe encriptadas sem copiar para "<br />" se executar o comando "php crypt.php" em SSH:

encrypted_password1
encrypted_password2
encrypted_password3

Os valores encrypted_password1, encrypted_password2 e encrypted_password3 devem ser semelhantes, por exemplo, ao formato da seguinte linha:

$2y$10$8eO7Iq3rh.u3CXvhuhKq.Om.nQJN.Z1sBT2jvOqVKCGzP42T/4LBC

Verifique apenas que a(s) sua(s) palavra(s)-passe(s) encriptada(s) começa(m) bem por $2y$. Confirmar-lhe-á que a(s) sua(s) password(s) foi(foram) encriptada(s) com o algoritmo seguro bcrypt.

Etapa 3 : definir os utilizadores e as palavras-passe encriptadas com o ficheiro ".htpasswd"

O ficheiro ".htpasswd" contém as palavras-passe numéricas correspondentes a cada um dos utilizadores declarados no ficheiro. Apenas estes utilizadores poderão aceder ao diretório cujo acesso pretende proteger.

Para isso, para cada utilizador, inscreva uma linha que indica o seu ID de utilizador e a sua palavra-passe encriptada:

user1:encrypted_password1
user2:encrypted_password2
user3:encrypted_password3

Substitua os valores user1, user2 e user3 do nosso exemplo pelos seus próprios nomes de utilizadores.

Substitua também os encrypted_password1, encrypted_password2 e encrypted_password3 pelas suas palavras-passe predefinidas.

Etapa 4 : configurar as regras no ficheiro ".htaccess"

Bloquear o acesso a um diretório completo

No diretório a proteger, crie um ficheiro ".htaccess" com o seguinte código:

AuthName "Indicates your login(s)"
AuthType Basic
AuthUserFile "/home/your_ftp_login/root_folder/admin/.htpasswd"
Require valid-user

No script acima, substitua os seguintes elementos pelos seus próprios valores:

  • "Indicates your login(s)": corresponde ao(s) utilizador(es) autorizado(s) a aceder ao diretório completo. Se tiver vários utilizadores, separe-os apenas por um espaço.
  • your_ftp_login: o login FTP que utiliza para se ligar ao seu espaço de armazenamento FTP. Para obter o seu login FTP, consulte o nosso guia sobre a ligação ao seu espaço FTP.
  • root_folder/admin/.htpasswd: caminho de acesso diretório desde a raiz FTP do seu alojamento web até ao ficheiro ".htpasswd" que deve ser utilizado para autenticar os utilizadores autorizados pela regra presente no seu ficheiro ".htaccess".

Bloquear o acesso a um ou vários ficheiros

Para bloquear o acesso a um ou vários ficheiros precisos, adicione uma Direction "Files" no ficheiro ".htaccess":

<Files test.php>

AuthName "Indicates your login(s)"
AuthType Basic
AuthUserFile "/home/your_ftp_login/root_folder/admin/.htpasswd"
Require valid-user

</Files>

No script acima, substitua os seguintes elementos pelos seus próprios valores:

  • test.php: nome do ficheiro específico ou grupo de ficheiros contendo, no nosso exemplo, o termo test.php (termo ao qual a restrição de acesso deve ser aplicada).
  • "Indicates your login(s)": corresponde ao(s) utilizador(es) autorizado(s) a aceder aos ficheiros cujos nomes contêm test.php. Se tiver vários utilizadores, separe-os por um espaço.
  • your_ftp_login: o login FTP que utiliza para se ligar ao seu espaço de armazenamento FTP. Para obter o seu login FTP, consulte o nosso guia sobre a ligação ao seu espaço FTP.
  • root_folder/admin/.htpasswd: caminho de acesso diretório da raiz FTP do seu alojamento web até ao ficheiro ".htpasswd" que deve ser utilizado para autenticar os utilizadores autorizados pela diretiva do ficheiro ".htaccess".
Warning

Deverá indicar uma diretiva "Files" para cada ficheiro a proteger.

As diretivas "Files" aplicam - se a todos os ficheiros com o mesmo nome ou que terminem com o nome especificado. Isto desde que estejam contidos no mesmo diretório que o ".htaccess" ou num dos seus sub-diretórios.

Na configuração acima indicada, como "new_test.php" contém test.php no seu nome, a diretiva "Files" aplicar-se-ia igualmente a um ficheiro "new_test.php" contido num sub-diretório do dossier "admin".

Além disso, enquanto não se autenticou para aceder aos ficheiros abrangidos pela diretiva, estes podem não aparecer e não podem, portanto, ser "listáveis" através de uma página "index of".

Danger

Quando terminar a implementação dos seus ficheiros ".htaccess" e ".htpasswd", elimine o ficheiro de encriptação "crypt.php" do seu alojamento web.

Quer saber mais?

Documentação oficial Apache

Aceder ao espaço FTP do alojamento web

Tutorial - Operações realizáveis com um ficheiro ".htaccess"

Bloquear o acesso ao meu website para determinados endereços IP através de um ficheiro .htaccess

Reescrever o URL de acesso ao meu website graças ao mod_rewrite através do ficheiro .htaccess

Para serviços especializados (referenciamento, desenvolvimento, etc), contacte os parceiros OVHcloud.

Se pretender usufruir de uma assistência na utilização e na configuração das suas soluções OVHcloud, consulte as nossas diferentes ofertas de suporte.

Fale com nossa comunidade de utilizadores.

Esta página foi útil?