Noções básicas de segurança do WordPress: o que é um ataque de injeção de SQL?

O WordPress, junto com a maioria dos outros sistemas de gerenciamento de conteúdo, usa um banco de dados para armazenar o estado. Estado são as coisas que o sistema de gerenciamento de conteúdo conhece, incluindo o conteúdo e sua organização, e os dados do usuário. Existem muitos tipos diferentes de banco de dados, mas o WordPress usa um dos bancos de dados de código aberto mais populares baseados em SQL, o MySQL.

SQL é uma linguagem usada para construir tabelas de bancos de dados, colocar dados nelas e extrair dados. Se parece com isso:

INSERIR EM VALORES DE TABELA (13, ‘Phoenix’, ‘AZ’, 33, 112);

Você pode pensar no estado atual de um banco de dados como a totalidade de todas as consultas SQL que ele executou. Na verdade, quando você faz backup de um banco de dados SQL, é isso que você obtém: um dump do SQL necessário para transformar um banco de dados novo e vazio no banco de dados de backup (além de alguns outros dados).

Como você pode imaginar, é importante garantir que apenas pessoas e programas autenticados tenham permissão para fazer consultas ao banco de dados de um site WordPress. Se um invasor puder enviar SQL para o banco de dados, ele poderá excluir, criar ou modificar dados – e esses dados são a visão do mundo do WordPress.

Ler:  Como usar o Wincher para melhorar a classificação de SEO no WordPress

Por exemplo, queremos que apenas algumas pessoas de confiança tenham permissões de administrador em nosso site WordPress. Dizemos ao WordPress quem são essas pessoas e o WordPress coloca seus dados no banco de dados. Se uma pessoa não autorizada puder informar ao banco de dados, por meio de uma consulta SQL, para criar um novo usuário administrador com uma senha de sua escolha, ela poderá assumir o controle do site.

É claro que existem muitas salvaguardas para impedir que isso aconteça. O banco de dados irá ignorar solicitações de fontes não autorizadas. Mas o sistema de gerenciamento de conteúdo precisa ser capaz de fazer alterações no banco de dados.

WordPress fica entre o usuário e o banco de dados. Os usuários autorizados interagem com o WordPress e o WordPress envia informações para o banco de dados. Os usuários nunca enviam solicitações diretamente ao banco de dados.

No entanto, às vezes os desenvolvedores cometem erros. Imagine que um desenvolvedor crie uma caixa de entrada em um site WordPress para que os usuários possam inserir seu e-mail, que é enviado ao banco de dados para ser armazenado. A única coisa que a caixa de entrada deve permitir o envio ao banco de dados é um endereço de e-mail válido. Mas um usuário mal-intencionado pode tentar usar a caixa de entrada para enviar algo diferente, como uma consulta SQL.

Ler:  Como mostrar sua equipe ou membros no WordPress com lista de funcionários

Na grande maioria das vezes, entradas como essa são rejeitadas pela validação no navegador e tornadas seguras por meio de escape e higienização. Se o invasor tiver muita sorte, o desenvolvedor pode ter cometido um erro, permitindo que o SQL fosse enviado diretamente para o banco de dados, o que definitivamente não é algo que queremos que aconteça.

Vulnerabilidades de injeção de SQL são raras, mas graves. Da perspectiva do usuário médio do WordPress, a melhor maneira de evitar ataques de injeção de SQL é instalar apenas temas e plug-ins de fontes confiáveis ​​e garantir que o site WordPress e seus plug-ins sejam atualizados regularmente – a atualização corrigirá quaisquer vulnerabilidades de injeção de SQL que tenham foi descoberto e relatado aos desenvolvedores do WordPress e de plugins.

Novas publicações:

Recomendação