É semelhante à resposta de @ jptsetme, mas funciona mesmo quando a string de consulta é /?dummy&author=5e o padrão de pesquisa RewriteRuleé muito rápido: Você geralmente vê uma captura ([0-9]*)em expressões regulares para isso. Mas não há necessidade de desperdiçar memória para a captura quando você não usa a expressão capturada, e uma correspondência para o primeiro caractere é suficiente, porque você não deseja aceitar author=1b.
Atualização 20.04.2017
Estou vendo mais solicitações "quebradas" de pessoas que são estúpidas demais para executar uma varredura simples. Os URLs solicitados são assim:
A ferramenta WPScan é um utilitário automatizado que tira proveito dos URLs amigáveis do WordPress para determinar os nomes de usuários. Ele percorrerá os 10 primeiros IDs possíveis para autores e verificará o Locationcabeçalho na resposta HTTP para encontrar um nome de usuário.
Usando http://mysite.urlpor exemplo ...
O WPScan irá verificar http://mysite.url/?author=1. Se seu site estiver usando links permanentes, retornará um redirecionamento 301 com um Locationcabeçalho de http://mysite.url/author/username. Se seu site não estiver usando links permanentes, retornará um status de 200 (OK), portanto o WPScan verificará o feed da string "posts by username" e extrairá o nome de usuário.
O que você pode fazer
Primeiro de tudo, apenas porque alguém pode adivinhar seu nome de usuário, não significa que seu site seja inseguro. E não há realmente nenhuma maneira de impedir alguém de analisar seu site dessa maneira.
Contudo ...
Se você está realmente preocupado com isso, eu recomendaria fazer duas coisas:
Desativar links permanentes. Isso forçará o WPScan e ferramentas semelhantes a analisar o conteúdo do seu site em nomes de usuário, em vez de confiar no URL.
Força os usuários a definir um apelido diferente. Na ausência de um nome de usuário no URL, as ferramentas de verificação procurarão "postagens por nome de usuário" no conteúdo do feed / postagem. Se você não está colocando nomes de usuários por aí, eles não podem ser presos.
Outra alternativa é alterar as reescritas do seu autor. Existem várias maneiras de fazer isso, e você provavelmente também pode encontrar algumas neste site .
Não testei isso completamente, mas acho que é preferível remover o recurso subjacente em vez de tentar criar muros em torno dele no nível do servidor da web. Portanto, nos termos do WP, isso impediria o processamento de variáveis de consulta relacionadas ao autor.
Você pode usar uma regra de reescrita .htaccess para impedir essa divulgação, mas também deve usar apelidos para evitar a divulgação de nomes de usuários no conteúdo analisável, conforme descrito pelo EAMann.
Como uma observação lateral, eu queria impedir a enumeração de nome de usuário no meu site hospedado com o WP Engine, que limita o acesso dos usuários a arquivos de configuração de nginx de baixo nível. No entanto, eles têm uma seção "Regras de redirecionamento" em seu painel de controle, que permite fazer isso. Depois de algum tempo, consegui descobrir a melhor configuração:
RedirectName:// choose a description for the rewriteDomain:// you *must* select a domain; "All Domains" will *not* work here!Source:^/$Destination:/?
Então você precisa mostrar o Advanced Settingspainel ...
Match args: author=([0-9]*)Rewrite type:301Permanent
Et voila, seus nomes de usuário estão seguros [r]!
Minha opinião profissional como testador de penetração para uma agência governamental ... é SEMPREvale a pena dificultar a enumeração de informações sobre seu site. Poucos de vocês terão um site que se eleva acima do google, hackers de script infantil. Estamos falando de segurança em camadas e, com cada camada, você adiciona tempo e complexidade a uma tentativa de penetração. Cada camada também aumenta o conjunto de habilidades exigidas pelo hacker. Existem alguns firewalls de aplicativos realmente bons disponíveis no WP. Procure aqueles que podem bloquear endereços IP que tenham repetido tentativas de login de usuário ou 404. A idéia é que seu firewall bloqueie automaticamente IPs que varrem seu site em busca de páginas que não existem ou tentam entrar repetidamente em seu site. Um bom recurso também inclui recursos de bloqueio de XSS e SQL Injection. Considere usar o All In One WP Security de Dicas e Truques HQ, Peter, Ruhul, Ivy.
Em vez da .htaccessrota, outra alternativa é adicionar o seguinte código aos temas do seu filho functions.php:
# Redirect author page to homepage
add_action('template_redirect','wpse_46469_author_page');function wpse_46469_author_page(){# If the author archive page is being accessed, redirect to homepageif( is_author()){
wp_safe_redirect( get_home_url(),301);exit;}}
Além disso, você pode alterar os links de autor padrão adicionados ao nome de usuário de cada página para outra coisa (como a página inicial), usando o seguinte:
# Replace author URL with the homepage
add_filter('author_link','wpse_46469_author_link');function wpse_46469_author_link(){# Return homepage URLreturn home_url();}
Sei que este é um post antigo, mas para futuras referências também gostaria de adicionar minha solução. Este é apenas um trecho para inserir no functions.phpseu tema. Ele deixará tudo no lugar e funcionando, até o arquivo do autor, mas elimina os pedidos de enumeração incorretos.
Quando encontrada, ela remove a variável de autor dos vars de consulta, para que não seja consultada.
Se você usar permalinks, isso deixará os arquivos do autor intactos. Além disso, se o URL for algo como: /dummy?author=1isso mostrará apenas a página /dummy.
A primeira linha detecta apenas a página inicial. Eu vou explicar o porquê. Esse recurso de "enumeração do usuário" funciona apenas na página inicial, portanto, não é necessário reescrever todos os URLs.
Em seguida, procuramos a author=string de consulta. É obvio.
Por fim, apenas mostramos a página original sem nenhum bloco, redirecionamento (301, 302) ou proibição (403). Não deveria agir como uma página com outro parâmetro inútil?
Respostas:
Uma solução simples que eu uso em um
.htaccess
:É semelhante à resposta de @ jptsetme, mas funciona mesmo quando a string de consulta é
/?dummy&author=5
e o padrão de pesquisaRewriteRule
é muito rápido: Você geralmente vê uma captura([0-9]*)
em expressões regulares para isso. Mas não há necessidade de desperdiçar memória para a captura quando você não usa a expressão capturada, e uma correspondência para o primeiro caractere é suficiente, porque você não deseja aceitarauthor=1b
.Atualização 20.04.2017
Estou vendo mais solicitações "quebradas" de pessoas que são estúpidas demais para executar uma varredura simples. Os URLs solicitados são assim:
Então você pode estender a regra acima para:
fonte
Você não pode.
A ferramenta WPScan é um utilitário automatizado que tira proveito dos URLs amigáveis do WordPress para determinar os nomes de usuários. Ele percorrerá os 10 primeiros IDs possíveis para autores e verificará o
Location
cabeçalho na resposta HTTP para encontrar um nome de usuário.Usando
http://mysite.url
por exemplo ...O WPScan irá verificar
http://mysite.url/?author=1
. Se seu site estiver usando links permanentes, retornará um redirecionamento 301 com umLocation
cabeçalho dehttp://mysite.url/author/username
. Se seu site não estiver usando links permanentes, retornará um status de 200 (OK), portanto o WPScan verificará o feed da string "posts by username" e extrairá o nome de usuário.O que você pode fazer
Primeiro de tudo, apenas porque alguém pode adivinhar seu nome de usuário, não significa que seu site seja inseguro. E não há realmente nenhuma maneira de impedir alguém de analisar seu site dessa maneira.
Contudo ...
Se você está realmente preocupado com isso, eu recomendaria fazer duas coisas:
Outra alternativa é alterar as reescritas do seu autor. Existem várias maneiras de fazer isso, e você provavelmente também pode encontrar algumas neste site .
fonte
Não testei isso completamente, mas acho que é preferível remover o recurso subjacente em vez de tentar criar muros em torno dele no nível do servidor da web. Portanto, nos termos do WP, isso impediria o processamento de variáveis de consulta relacionadas ao autor.
O PS nota que isso matará completamente os arquivos do autor , o que pode ou não ser o nível de paranóia apropriado :)
fonte
Você pode usar uma regra de reescrita .htaccess para impedir essa divulgação, mas também deve usar apelidos para evitar a divulgação de nomes de usuários no conteúdo analisável, conforme descrito pelo EAMann.
O blog a seguir descreve como fazer isso, mas possui um erro de digitação na regra de reescrita: http://www.question-defense.com/2012/03/20/block-wordpress-user-enumeration-secure-wordpress-against-hacking
A regra correta também deve remover a string de consulta do URL reescrito, ou você ainda divulgará o nome de usuário. Deve ficar assim:
Trabalhando bem para nós.
fonte
Eu queria acrescentar que você também pode fazer isso no nginx. Verifique:
» Bloqueando a enumeração de usuários do WordPress no nginx - www.edwidget.name
Como uma observação lateral, eu queria impedir a enumeração de nome de usuário no meu site hospedado com o WP Engine, que limita o acesso dos usuários a arquivos de configuração de nginx de baixo nível. No entanto, eles têm uma seção "Regras de redirecionamento" em seu painel de controle, que permite fazer isso. Depois de algum tempo, consegui descobrir a melhor configuração:
Então você precisa mostrar o
Advanced Settings
painel ...Et voila, seus nomes de usuário estão seguros [r]!
fonte
Eu bloqueei completamente a enumeração de usuários do WPScan adicionando o seguinte no htaccess
Minha opinião profissional como testador de penetração para uma agência governamental ... é SEMPREvale a pena dificultar a enumeração de informações sobre seu site. Poucos de vocês terão um site que se eleva acima do google, hackers de script infantil. Estamos falando de segurança em camadas e, com cada camada, você adiciona tempo e complexidade a uma tentativa de penetração. Cada camada também aumenta o conjunto de habilidades exigidas pelo hacker. Existem alguns firewalls de aplicativos realmente bons disponíveis no WP. Procure aqueles que podem bloquear endereços IP que tenham repetido tentativas de login de usuário ou 404. A idéia é que seu firewall bloqueie automaticamente IPs que varrem seu site em busca de páginas que não existem ou tentam entrar repetidamente em seu site. Um bom recurso também inclui recursos de bloqueio de XSS e SQL Injection. Considere usar o All In One WP Security de Dicas e Truques HQ, Peter, Ruhul, Ivy.
fonte
Em vez da
.htaccess
rota, outra alternativa é adicionar o seguinte código aos temas do seu filhofunctions.php
:Além disso, você pode alterar os links de autor padrão adicionados ao nome de usuário de cada página para outra coisa (como a página inicial), usando o seguinte:
fonte
Sei que este é um post antigo, mas para futuras referências também gostaria de adicionar minha solução. Este é apenas um trecho para inserir no
functions.php
seu tema. Ele deixará tudo no lugar e funcionando, até o arquivo do autor, mas elimina os pedidos de enumeração incorretos.O que faz:
author=1
Se você usar permalinks, isso deixará os arquivos do autor intactos. Além disso, se o URL for algo como:
/dummy?author=1
isso mostrará apenas a página/dummy
.Graças à resposta da Rarst a esta pergunta e https://perishablepress.com/stop-user-enumeration-wordpress/
fonte
Quero postar minha própria visão:
A primeira linha detecta apenas a página inicial. Eu vou explicar o porquê. Esse recurso de "enumeração do usuário" funciona apenas na página inicial, portanto, não é necessário reescrever todos os URLs.
Em seguida, procuramos a
author=
string de consulta. É obvio.Por fim, apenas mostramos a página original sem nenhum bloco, redirecionamento (301, 302) ou proibição (403). Não deveria agir como uma página com outro parâmetro inútil?
fonte