Ícone do site Dolutech

Como Montar um .htaccess Seguro para seu WordPress

montar htaccess seguro

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

Como Otimizar meu WordPress

Sair da versão mobile