Parar solicitações HTTP de postagem com o NGINX antes de acessar a página de login do aplicativo WordPress

1

Como os bots enviam solicitações de HTTP Post diretamente no destino conhecido /wp-login.php para pular o Captcha, seria possível verificar se há uma entrada de postagem personalizada, como o Captcha Input ou meu próprio campo de entrada personalizado, e então negar o pedido se não estiver presente?

Então, usando o link

Sou novato no NGINX, mas imagino algo como:

location /wp-login.php {

  set_form_input $log; #input name for wp username
  set_form_input $pwd; #input name for wp password
  set_form_input $my_custom_field; #my custom input

    if (!$my_custom_field){ #my custom input field not set
      return 444;
    }
    #how to test if a variable in NGINX has been set?
}

É algo assim possível?

Obrigado!

    
por i_a 29.11.2017 / 22:52

1 resposta

0

Geralmente, a abordagem para resolver esse tipo de problema é fazer as verificações no código do aplicativo no lado do servidor - um código captcha ausente ou inválido produz um erro de autorização. No entanto, neste caso, você provavelmente não quer modificar o Wordpress diretamente.

Você pode verificar os cabeçalhos no Nginx , mas não vejo nenhuma documentação sobre como verificar um campo de formulário - Eu acho que isso está fora do escopo do Nginx.

Mas mesmo se pudesse, isso seria seguro? Você pode rejeitar pedidos que não tenham a entrada captcha, mas como você saberia no Nginx se o captcha está ou não correto? Um invasor pode enviar mensagens sem sentido no campo e passar um cheque simples. Você precisa verificar se o captcha está correto, o que provavelmente significa executar código no Wordpress, e qualquer código de verificação captcha também deve verificar a presença do campo. Se você está adicionando captchas através de um plugin, eu esperaria que o plugin lidasse com este caso.

    
por 29.11.2017 / 23:16