Impedir o acesso ou excluir automaticamente readme.html, license.txt, wp-config-sample.php

13

Apenas uma pergunta rápida que pode ajudar um pouco com a segurança. Notei que o arquivo readme.html tem o número da versão listado. Ele reaparece após cada atualização e o licence.txt e wp-config-sample.php.

Existe uma maneira fácil de o WordPress remover automaticamente esses arquivos após uma atualização?

Eu já bloqueio a exibição do número da versão nas meta tags, feeds rss, atom etc.

Eu sei que este tipo de segurança não é exatamente que muito útil, mas apenas pensei que poderia ser um pequeno começo. Ouvi dizer que as pessoas podem simplesmente verificar a versão do jQuery incluída no WP-includes e fazer referência cruzada de qual versão do WP foi enviada.

Sahas Katta
fonte

Respostas:

19

Você realmente não precisa remover esses arquivos. É muito mais fácil bloquear o acesso a eles. Se você estiver usando URLs bonitas, já possui um arquivo .htaccess. O uso de .htaccess para bloquear os arquivos é seguro e você só precisa adicionar uma diretiva uma vez.

O bloqueio de arquivos é feito adicionando uma diretiva ao .htaccess assim:

    <files filename.file-extension>
         order allow,deny
         deny from all
    </files>

Portanto, para bloquear o readme.html, faça o seguinte:

    <files readme.html>
         order allow,deny
         deny from all
    </files>

Faça o mesmo com o arquivo de licença ou qualquer outro arquivo que você deseja impedir que alguém acesse. Basta abrir .htaccess no bloco de notas ou em qualquer outro editor de texto básico, adicionar as diretivas e salvar, certificando-se de que o editor de texto mantenha o nome do arquivo exatamente - sem nenhum .txt no final.

Elpie
fonte
1
Esta é realmente a opção que eu acabei escolhendo. Funciona perfeitamente.
Sahas Katta 16/05
1
Cuidado , a sintaxe acima é válida apenas até o Apache 2.2! Depois, use Require all denied(substituindo as 2 linhas internas) para o Apache 2.4 e superior. Mais detalhes aqui
Frank Nocke
5

Aqui está a minha opinião:

RewriteRule (?:readme|license|changelog|-config|-sample)\.(?:php|md|txt|html?) - [R=404,NC,L]
  • 404 (não existente) em vez de 403 (proibido) para evitar qualquer pista sobre a existência.
  • também em subpastas (ou seja, temas e plugins, que podem oferecer oportunidades de ataque)
  • sem distinção entre maiúsculas e minúsculas, flexível com extensão, também captura README.html ou license.html (sinta-se à vontade para adicionar suspeitos típicos, como registros de alterações | perguntas frequentes | contribuições)

Pessoalmente, eu também bloquearia:

RewriteRule \.(?:psd|log|cmd|exe|bat|c?sh)$ - [NC,F]

nb:

  • '?:' apenas declara que o colchete não corresponde (sem importância).
  • requer RewriteEngine para ser on (provavelmente é. seria raro usar o wordpress sem ... (permalinks feios, etc ...)).
  • insira antes da # BEGIN WordPressseção em seu arquivo .htaccess
Frank Nocke
fonte
3
add_action('core_upgrade_preamble','my_function_to_delete_files');

Editar: você também pode tentar estes

add_action('upgrader_pre_install','my_function_to_delete_files');
add_action('upgrader_post_install','my_function_to_delete_files');
Atif Mohammed Ameenuddin
fonte
Obrigado, eu descobri o recurso desvincular php e funciona, mas um problema. O gancho que você forneceu parece ser executado simplesmente visitando a seção Atualizações em Painel. Existe outro gancho para após a atualização?
Sahas Katta
1
vou dar uma olhada e avisar você
Atif Mohammed Ameenuddin
@Sahas @ atif089 Você conseguiu fazer isso funcionar?
INT
Em vez de exclusão (no caso de você querer realmente ler o readme!) Você pode usar isso em sua funçãochmod("/path/to/readme.txt", 0640);
Bysander