Como proteger seu login do WordPress de ataques de força bruta – abordagem simples?
Para fazer login no painel de administração do seu blog wordpress, o arquivo wp-login.php é o arquivo a ser visitado. Muitos spammers usarão senhas de força bruta até acertarem. Isso não apenas coloca a segurança do seu blog em risco, mas também consome a largura de banda do tráfego.
Você pode verificar seu log de visitas e banir certos IPs, no entanto, esta solução pode não ser geral e eficaz se os ataques forem de IPs múltiplos/distribuídos, por exemplo, DDOS. A solução a seguir é simples e ainda assim poderosa/eficaz. Funciona ocultando o wp-login.php ou colocando um cadeado extra, que só você conhece.
A abordagem é editar o arquivo functions.php do wordpress (de preferência na pasta de template do tema filho) e adicionar as seguintes linhas de código PHP :
function login_protection(){
if($_GET['secret'] != 'helloacm') header('Location: <a class="vglnk" target="_blank" href="https://helloacm.com" rel="nofollow"><span>https</span><span>://</span><span>helloacm</span><span>.</span><span>com</span></a>');
}
add_action('login_enqueue_scripts','login_protection');
Basta salvar o arquivo e, da próxima vez, se você quiser fazer login no seu painel, deverá chamá-lo assim:
/wp-login.php?secret=helloacm
Você pode alterar o par de chave e valor de acordo com o seu favorito. A falha em passar os valores secretos redirecionará os usuários para a página inicial, no entanto, para torná-lo melhor, você pode querer retornar um erro 404 – não encontrado, que pode confundir/enganar os invasores para que eles abandonem os ataques de força bruta.
function login_protection(){
if($_GET['secret'] != 'helloacm') {
header($_SERVER['SERVER_PROTOCOL']. ' 404 Not Found', true, 404);
exit("<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">rn<html><head>rn<title>404 Not Found</title>rn</head><body>rn<h1>Not Found</h1>rn<p>The requested URL ". $_SERVER['SCRIPT_NAME']. " was not found on this server.</p>rn</body></html>");
}
}
add_action('login_enqueue_scripts','login_protection');