Como proteger meu WordPress de injeções SQL?

Hoje em dia, hackers utilizam várias técnicas para invadir sites em WordPress, e uma delas é a conhecida SQL Injection (Injeção SQL). Este, é um tipo de ameaça de segurança que se aproveita de falhas em sistemas que interagem com bases de dados via SQL. A injeção de SQL ocorre quando o atacante consegue inserir uma série de instruções SQL dentro de uma consulta (query) através da manipulação das entradas de dados de uma aplicação. Vejamos abaixo, como evitar o ataque e até mesmo um exemplo de código que você poderá utilizar e assim blindar ainda mais seu WordPress.

 

Como evitar o SQL Injection?

Para evitar que seu site seja exposto a vulnerabilidades de ataques, mantenha este sempre atualizado e sempre utilize a versão mais atual tanto da plataforma, quanto os seus plugins que utiliza. Mantendo seu WordPress atualizado, você sempre terá as mais novas inovações e melhorias da plataforma.

 

Práticas de programação

O WordPress, em todas as suas interações com o banco de dados, faz uso de uma classe chamada wpdb e trata as entradas através do método prepare. Na programação de seu plugin ou até mesmo alguma funcionalidade de seu WordPress, você deve utilizar esta classe, abaixo mostraremos um exemplo de utilização:

 

$sql = $wpdb->prepare( "SELECT user_email FROM $wpdb->users WHERE ID = %d", $user_id );
$user_email = $wpdb->get_var( $sql );

 

No exemplo acima, estamos selecionando o e-mail do usuário baseado na busca por seu ID na tabela de usuários do WordPress.

 

Protegendo o WordPress através do .htaccess

Através do arquivo .htaccess, você poderá criar instruções para proteger seu WordPress e deixa-lo ainda mais seguro. Abaixo deixamos um exemplo de código para ser utilizado, basta você copiar e colar em seu arquivo .htaccess. Lembre-se: Sempre faça backup antes de suas alterações.

 

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC]
RewriteRule ^(.*)$ - [F,L]
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} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [NC,OR]
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [NC,OR]
RewriteCond %{QUERY_STRING} ^.*([|]|(|)|<|>|ê|"|;|?|*|=$).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(&#x22;|&#x27;|&#x3C;|&#x3E;|&#x5C;|&#x7B;|&#x7C;).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(%24&x).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127.0).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(globals|encode|localhost|loopback).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(request|select|insert|union|declare).* [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^(.*)$ - [F,L]
</IfModule>

 

Você adota alguma outra prática para ficar livre de SQL Injection no WordPress? Compartilhe conosco, envie para nós sua sugestão!

Bruno de Lima Costa já escreveu 583 artigos

Deixe seu comentário

Seu email não será divulgado. Campos obrigatórios *

Nos comentários você poderá utilizar essas marcações: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>