Segurança: Alterando o prefixo do Banco de Dados do WordPress

Uma das coisas incríveis do WordPress é que ele é um sistema de publicação dinâmica, que utiliza um banco de dados para armazenar informações de seu site: posts, opções e configurações de plugins e temas – todos estes dados são armazenados no banco de dados do seu site. É como se fosse cérebro da sua instalação do WordPress. Infelizmente o banco de dados do WordPress é também o principal alvo dos ataques. Spammers e outros caras maus miram nas tabelas do banco de dados com vários scripts automatizados de injeção SQL, e outros códigos maliciosos. Com isso, é fundamental proteger seu banco de dados e manter backups recentes. Uma das maneiras mais inteligentes para proteger seu banco de dados do site é mudar o prefixo da tabela padrão para algo obscuro e difícil de adivinhar. Como uma espécie de senha.

Por padrão, durante a instalação, o WordPress cria o banco de dados com todas as tabelas com o prefixo “wp_”. Existem 11 tabelas criadas no procedimento de instalação padrão, e todas elas serão prefixados com wp_:

Prefixo das tabelas do WordPress

Um problema nisso é que ao instalar o WP com o prefixo padrão das tabelas, um possível invasor poderá acertar o nome de suas tabelas sem problemas. Existem scripts automatizados que visam o banco de dados do WordPress exatamente com esses nomes de tabela durante seus ataques, o que é totalmente compreensível pois quase todos fazem suas instalações deste modo, o que facilita o trabalho dos invasores.

Felizmente, você pode melhorar a segurança de seu site alterando o prefixo para algo completamente aleatório e exclusivo. Existem duas maneiras de alterar o banco de dados de prefixo: a maneira fácil e da maneira mais difícil, e qual maneira você vai usar depende exclusivamente se você já instalou o seu site WordPress ou não ..

Alterando o prefixo de tabela padrão antes de instalar o WordPress

Primeiro vejamos qual o caminho mais fácil. Antes de instalar o WordPress, ao configurar o arquivo wp-config.php com as suas credenciais de banco de dados, note que lá você verá a seguinte linha:

$table_prefix = ‘wp_’;

Para alterar o prefixo do banco de dados, basta alterar esta string pela que você desejar.
Se você já está com seu site WordPress instalado e deseja alterar o prefixo, vejamos abaixo como proceder.

Alterando o prefixo de tabela padrão após a instalação do WordPress

Para mudar seu prefixo após a instalação, reserve cerca de dez minutos e siga estes passos:

Passo 1: Preparativos

Antes de mudar seu prefixo de tabela, verifique se você tem um backup recente e cerca de 10 minutos de tempo de inatividade para o seu site. Pode ser uma boa idéia para redirecionar os visitantes para uma página de manutenção temporária.

Passo 2: Alterar prefixo da tabela

Mudar seu prefixo de tabela de banco em wp-config.php de wp_ para algo mais seguro e desconhecido por outras pessoas, como um prefixo aleatório qualquer

Passo 3: Alterar todas as tabelas do banco de dados WordPress

Vá para o seu banco de dados (usando o phpMyAdmin ou qualquer outro) e renomeie todos os prefixos de tabela WordPress wp_ para que você tenha especificado no seu arquivo wp-config.php. Aqui estão os comandos SQL para renomear as 11 tabelas padrão do WordPress:

RENAME table ‘wp_commentmeta’ TO ‘wp_VzQCxSJv7uL_commentmeta’;
RENAME table ‘wp_comments’ TO ‘wp_VzQCxSJv7uL_comments’;
RENAME table ‘wp_links’ TO ‘wp_VzQCxSJv7uL_links’;
RENAME table ‘wp_options’ TO ‘wp_VzQCxSJv7uL_options’;
RENAME table ‘wp_postmeta’ TO ‘wp_VzQCxSJv7uL_postmeta’;
RENAME table ‘wp_posts’ TO ‘wp_VzQCxSJv7uL_posts’;
RENAME table ‘wp_terms’ TO ‘wp_VzQCxSJv7uL_terms’;
RENAME table ‘wp_term_relationships’ TO ‘wp_VzQCxSJv7uL_term_relationships’;
RENAME table ‘wp_term_taxonomy’ TO ‘wp_VzQCxSJv7uL_term_taxonomy’;
RENAME table ‘wp_usermeta’ TO ‘wp_VzQCxSJv7uL_usermeta’;
RENAME table ‘wp_users’ TO ‘wp_VzQCxSJv7uL_users’;

Se em seu banco de dados houver outras tabelas de plugins ou o que quer que seja, é bom renomeá-las também. O objetivo aqui é renomear todas as tabelas que começam com o prefixo padrão.

Passo 4: Edite o WordPress tabela de opções

Agora, procure a tabela de opções para todas as instâncias do prefixo antigo. Para fazer isso, digite a seguinte consulta SQL:

SELECT * FROM ‘wp_VzQCxSJv7uL_options’ WHERE ‘option_name’ LIKE ‘{9eeb70f7dbe31288fb2327b386e95442712f640702adada4ce45490c3a150a0a}wp_{9eeb70f7dbe31288fb2327b386e95442712f640702adada4ce45490c3a150a0a}’

Que a pesquisa irá retornar a opção wp_user_roles junto com outras opções criado por plugins, scripts personalizados, etc. O objetivo aqui é renomear as opções que começam com wp_ para o novo prefixo.

Passo 5: Edite a tabela usermeta

Agora, procure o usermeta para todas as instâncias do prefixo wp_antigo. Aqui está um comando SQL para fazer isso:

SELECT * FROM ‘wp_VzQCxSJv7uL_usermeta’ WHERE ‘meta_key’ LIKE ‘{9eeb70f7dbe31288fb2327b386e95442712f640702adada4ce45490c3a150a0a}wp_{9eeb70f7dbe31288fb2327b386e95442712f640702adada4ce45490c3a150a0a}’

Ao executar essa consulta em um banco de dados WordPress instalado recentemente, os seguintes campos usermeta foram devolvidos:

wp db prefix usermeta

O número de campos que você precisará mudar o nome pode variar dependendo de plugins e outros fatores, mas como antes, lembre-se de renomear qualquer entrada que começa com o prefixo de tabela padrão do WordPress, wp_.

Passo Final: teste, backup e fim!

Chegando até aqui, todas as instâncias do prefixo tabela antiga (wp_) foram substituídos com o wp_VzQCxSJv7uL_ no nosso exemplo. Uma vez feito isso, vá verificar se seu site está em perfeito funcionamento. Teste o Admin, páginas, mensagens, pesquisa e tudo mais que você puder pensar (ou tiver tempo). Se o seu site parece estar funcionando como antes, seu site sobreviveu bem a esta cirurgia. Mas é bom fazer outro backup do banco de dados 🙂

Fonte: DigWP

Posts Similares

  • Prós e contras de se utilizar um Tema Premium (pago) para WordPress

    Muitas pessoas na comunidade open source acreditam que os temas pagos para WordPress fazem uma cobrança desleal e são uma tentativa de pessoas gananciosas para alimentar a formação de suas empresas e negócios em projetos de código aberto. Temos outra visão por aqui, vamos a ela. Temas Premium são contribuições para um projeto de código…

  • Como utilizar os Campos Personalizados em seu tema

    Provavelmente você já viu no Adicionar novo post ou página o formulário Campos personalizados. Com os campos personálizados você pode adicionar qualquer campo e posteriormente inserir em seu tema. Para inserir em seu temas algum campo, utilize a seguinte tag: <?php $values = get_post_custom_values(”campo“); echo $values[0]; ?> Altere campo pelo nome que você escolheu para…

  • O WordPress é seguro mesmo?

    O WordPress é seguro mesmo?

    Utilizando o WordPress desde 2007 e participando de muitos eventos, grupos em redes sociais, fóruns e afins, algumas perguntas acabam se tornando bem repetitivas para mim, e o assunto deste post é uma delas. Nada contra a pergunta, quem utiliza o WordPress a pouco tempo ou ainda não conhece o sistema sempre vai se fazer esta…

  • Utilizando o operador de módulo no loop

    Na maior parte das linguagens de programação existe um operador específico, por vezes esquecido pelos programadores, para operações de módulo. Seu símbolo, na maioria das linguagens, é a % (o que pode causar alguma confusão para os novatos). O PHP não foge à regra e também possui este operador de módulo, sendo o seu símbolo…

  • Como listar os últimos usuários registrados no seu blog?

    Se você tem um blog em que é permitido o registro de novos usuários (sejam eles autores, contribuidores, etc), você pode mostrar em sua sidebar (ou qualquer outra área escolhida por você) os últimos a terem se registrados, bastando apenas incluir o código abaixo no local desejado. Vale destacar que onde sê lê LIMIT 10…

  • 7 verificações para fazer antes de publicar seu site/blog em WordPress

    Durante esses dias, eu fiz alguns testes em vários blogs no meu trabalho (+/- uns 100). Encontrei erros absurdos e ao mesmo tempo muito bobos.  Por isso me auto-convidei para escrever aqui no Tudo Para WordPress e compartilhar essa experiência com vocês. Esse post é apenas um “checklist” de coisas que você pode testar e…

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

12 Comentários

  1. Guga. Ótima dica! Show.

    Eu realmente não atentei pra esse ponto em minha instalação e coloquei o prefixo padrão. Já estou providenciando a mudança.

    Abraços.

  2. Olá Guga Alves, foi muito interessante a publicação desse tutorial, pois estou trabalhando na construção do meu próprio site feito com a plataforma WordPress.

    – Eu utilizo aqui o Xampp com o phpmyadmin para o gerenciamento do meu Banco de Dados. Na hora de executar o comendo publicado logo acima em sua brilhante postagem eu tive que tirar as aspas no momento de Renomear as 11 tabelas do meu Banco de Dados.

  3. Oi Guga muito obrigado pelo post, me ajudou muito!

    Só tem um detalhe no post:

    Se colocar um escape no sublinhado ai a consulta retorna apenas as tabelas que nós precisamos, por exemplo:

    Disso:
    SELECT * FROM ‘wp_VzQCxSJv7uL_options’ WHERE ‘option_name’ LIKE ‘%wp_%’

    SELECT * FROM ‘wp_VzQCxSJv7uL_usermeta’ WHERE ‘meta_key’ LIKE ‘%wp_%’

    Para isso:
    SELECT * FROM ‘wp_VzQCxSJv7uL_options’ WHERE ‘option_name’ LIKE ‘wp\_%’

    SELECT * FROM ‘wp_VzQCxSJv7uL_usermeta’ WHERE ‘meta_key’ LIKE ‘wp\_%’

    Um abraço e t+

  4. Oi

    Eu fiz tudo como explicou mas o meu site fica como se tivesse uma nova instalação, perdendo todos as configurações que tinha…falta alguma coisa ou não fiz algo correcto?

  5. Muito boa a postagem Guga.

    Aqui executei e deu tudo certinho, apenas na hora de substituir wp_ dentro das tabelas que dava erro. Não sei se é por que uso o Sequel Pro mas de qualquer forma eu usei o arquivo searchreplacedb2.php pra substituir e deu certinho.

    Obrigado pela ótima postagem.

    abraço