Empêcher l'accès ou supprimer automatiquement readme.html, license.txt, wp-config-sample.php

13

Juste une question rapide qui pourrait aider un peu avec la sécurité. J'ai remarqué que le fichier readme.html a le numéro de version répertorié. Il réapparaît après chaque mise à niveau, tout comme le fichier licence.txt et wp-config-sample.php.

Existe-t-il un moyen simple pour que WordPress supprime automatiquement ces fichiers après une mise à niveau?

Je bloque déjà le numéro de version de l'affichage dans les balises META, les flux rss, atom, etc.

Je sais que ce type de sécurité est pas exactement ce que beaucoup utile, mais juste pensé qu'il pourrait être un tout petit début. J'ai entendu dire que les gens pouvaient simplement vérifier la version de jQuery incluse dans WP-includes et faire une référence croisée à la version de WP qui l'a expédiée.

Sahas Katta
la source

Réponses:

19

Vous n'avez pas vraiment besoin de supprimer ces fichiers. Il est beaucoup plus facile de simplement bloquer leur accès. Si vous utilisez de jolies URL, vous disposez déjà d'un fichier .htaccess. L'utilisation de .htaccess pour bloquer les fichiers est sécurisée et vous ne devez ajouter une directive qu'une seule fois.

Le blocage des fichiers se fait en ajoutant une directive à .htaccess comme ceci:

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

Donc, pour bloquer readme.html, vous procédez comme suit:

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

Faites de même avec le fichier de licence ou tout autre fichier auquel vous souhaitez empêcher quiconque d'accéder. Ouvrez simplement .htaccess dans le Bloc-notes ou tout autre éditeur de texte de base, ajoutez les directives et enregistrez, en vous assurant que l'éditeur de texte conserve le nom de fichier exactement - sans aucun .txt à la fin.

Elpie
la source
1
C'est en fait l'option avec laquelle j'ai fini par aller. Cela fonctionne parfaitement.
Sahas Katta
1
Attention , la syntaxe ci-dessus n'est valable que jusqu'à Apache 2.2! Ensuite, utilisez Require all denied(en remplaçant ces 2 lignes internes) pour Apache 2.4 et supérieur. Plus de détails ici
Frank Nocke
5

Voici mon point de vue:

RewriteRule (?:readme|license|changelog|-config|-sample)\.(?:php|md|txt|html?) - [R=404,NC,L]
  • 404 (non existant) plutôt que 403 (interdit) pour éviter tout indice sur l'existence.
  • également dans les sous-dossiers (c'est-à-dire les thèmes et les plugins, qui pourraient offrir des opportunités d'attaque)
  • insensible à la casse, flexible pour l'extension, capture également README.html ou license.html (n'hésitez pas à ajouter des suspects typiques comme changelogs | faq | contribuant)

Personnellement, je bloquerais également:

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

nb:

  • '?:' déclare simplement que la parenthèse ne correspond pas (aucune importance).
  • nécessite que RewriteEngine soit on(c'est très probablement. il serait rare, d'utiliser wordpress sans ... (permaliens laids, etc ...)).
  • insérer avant la # BEGIN WordPresssection dans votre .htaccess
Frank Nocke
la source
3
add_action('core_upgrade_preamble','my_function_to_delete_files');

Edit: vous pouvez également les essayer

add_action('upgrader_pre_install','my_function_to_delete_files');
add_action('upgrader_post_install','my_function_to_delete_files');
Atif Mohammed Ameenuddin
la source
Merci, j'ai compris la fonction de dissociation de php et cela fonctionne, mais un problème. Le hook que vous avez fourni semble s'exécuter en visitant simplement la section Mises à jour sous Tableau de bord. Existe-t-il un autre crochet après la mise à niveau?
Sahas Katta
1
mal jeter un oeil et vous faire savoir
Atif Mohammed Ameenuddin
@Sahas @ atif089 Avez-vous réussi à faire fonctionner cela?
INT
Au lieu de supprimer (au cas où vous voudriez réellement lire le fichier Lisezmoi!), Vous pouvez l'utiliser dans votre fonctionchmod("/path/to/readme.txt", 0640);
Bysander