O arquivo .htaccess
é um poderoso arquivo de configuração do servidor Apache que pode ser usado para aumentar a segurança do seu site WordPress. Neste artigo, vamos explicar como criar e configurar um .htaccess
seguro para proteger seu site contra várias ameaças comuns.
Webservers compatíveis:
Apache, Nginx e LiteSpeed (OpenLiteSpeed)
Introdução ao .htaccess
O arquivo .htaccess
permite que você controle várias configurações no Apache, como redirecionamentos, permalinks, controle de acesso e muito mais. Configurar corretamente este arquivo pode ajudar a proteger seu site WordPress contra ataques comuns, como injeção de SQL, ataques de força bruta e exploração de vulnerabilidades.
Configurações Básicas do .htaccess
1. Protegendo o Arquivo .htaccess
O primeiro passo é garantir que o próprio arquivo .htaccess
esteja protegido contra acessos não autorizados.
<files ~ "^\.ht">
Order allow,deny
Deny from all
</files>
2. Desabilitando Listagem de Diretório
Desabilite a listagem de diretórios para evitar que usuários vejam a estrutura de diretórios do seu site.
Options -Indexes
3. Protegendo o wp-config.php
O arquivo wp-config.php
contém informações sensíveis sobre o seu banco de dados. Proteja-o adicionando o seguinte código ao .htaccess
:
<files wp-config.php>
Order allow,deny
Deny from all
</files>
4. Bloqueando Acesso ao wp-content
Bloqueie o acesso direto a arquivos PHP no diretório wp-content
:
<Directory /path/to/your/wordpress/wp-content>
<Files *.php>
Order Deny,Allow
Deny from all
</Files>
</Directory>
5. Protegendo o Diretório wp-includes
O diretório wp-includes
contém arquivos essenciais para o funcionamento do WordPress. Proteja-o adicionando o seguinte código:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>
Configurações de Segurança Avançadas
6. Prevenindo Hotlinking
Impeça que outros sites usem suas imagens e recursos diretamente:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?seusite.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [F,NC,L]
7. Configurando Cabeçalhos de Segurança
Adicione cabeçalhos de segurança para proteger contra várias ameaças:
<IfModule mod_headers.c>
Header set X-Content-Type-Options "nosniff"
Header set X-XSS-Protection "1; mode=block"
Header set X-Frame-Options "SAMEORIGIN"
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Header set Content-Security-Policy "default-src 'self';"
</IfModule>
8. Redirecionando HTTP para HTTPS
Garanta que todas as conexões sejam feitas via HTTPS:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
9. Limitando Tentativas de Login
Use o seguinte código para limitar tentativas de login e impedir ataques de força bruta:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-login\.php*
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?seusite.com [NC]
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000$
RewriteRule ^(.*)$ - [F,L]
</IfModule>
0. Protegendo Contra Injeções de SQL e XSS
Impeça injeções de SQL e ataques de cross-site scripting:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} (\|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (\.\./) [NC,OR]
RewriteCond %{QUERY_STRING} boot\.ini [NC,OR]
RewriteCond %{QUERY_STRING} tag\= [NC,OR]
RewriteCond %{QUERY_STRING} ftp\: [NC,OR]
RewriteCond %{QUERY_STRING} http\: [NC,OR]
RewriteCond %{QUERY_STRING} https\: [NC,OR]
RewriteCond %{QUERY_STRING} mosConfig [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(\<|%3C).*script.*(\>|%3E).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(\<|%3C).*iframe.*(\>|%3E).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(\<|%3C).*object.*(\>|%3E).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(\<|%3C).*applet.*(\>|%3E).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(\<|%3C).*embed.*(\>|%3E).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(\<|%3C).*form.*(\>|%3E).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(javascript|vbscript|jscript|about)\:.* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(<|%3C).*alert.*(>|%3E).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(<|%3C).*document.*(>|%3E).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(<|%3C).*write.*(>|%3E).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(<|%3C).*cookie.*(>|%3E).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(<|%3C).*window.*(>|%3E).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(<|%3C).*eval.*(>|%3E).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(base64|localhost|127\.0\.0\.1|loopback).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(\(|%28).*(\)|%29).* [NC]
RewriteRule ^(.*)$ - [F,L]
</IfModule>
Considerações Finais
Configurar o .htaccess
corretamente é uma etapa essencial para garantir a segurança do seu site WordPress. As regras mencionadas acima ajudarão a proteger seu site contra diversas ameaças comuns. Lembre-se de sempre fazer backup do seu arquivo .htaccess
antes de fazer qualquer alteração e testar as mudanças em um ambiente de desenvolvimento antes de aplicá-las em produção.
Artigos Recomendados Dolutech:
Como tornar seu WordPress mais seguro
Amante por tecnologia Especialista em Cibersegurança e Big Data, Formado em Administração de Infraestrutura de Redes, Pós-Graduado em Ciências de Dados e Big Data Analytics e Machine Learning, Com MBA em Segurança da Informação, Escritor do livro ” Cibersegurança: Protegendo a sua Reputação Digital”.