Запретить доступ или автоматическое удаление readme.html, license.txt, wp-config-sample.php

13

Просто быстрый вопрос, который может немного помочь с безопасностью. Я заметил, что в файле readme.html указан номер версии. Он появляется после каждого обновления, как и licence.txt, и wp-config-sample.php.

Есть ли простой способ, чтобы WordPress автоматически удалял эти файлы после обновления?

Я уже блокирую отображение номера версии в метатегах, RSS-каналах, Atom и т. Д.

Я знаю , что этот тип безопасности не точно , что очень полезно, но просто подумал , что это может быть крошечное началом. Я слышал, что люди могут просто проверить версию jQuery, включенную в WP-include, и узнать, какая версия WP ее поставила.

Сахас Катта
источник

Ответы:

19

Вам не нужно удалять эти файлы. Намного проще просто заблокировать доступ к ним. Если вы используете красивые URL, у вас уже есть файл .htaccess. Использование .htaccess для блокировки файлов является безопасным, и вам нужно добавить директиву только один раз.

Блокировка файлов осуществляется путем добавления директивы в .htaccess следующим образом:

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

Итак, чтобы заблокировать readme.html, вы делаете это:

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

Сделайте то же самое с файлом лицензии или любым другим файлом, который вы хотите запретить кому-либо получить доступ. Просто откройте .htaccess в Блокноте или любом другом простом текстовом редакторе, добавьте директивы и сохраните, убедившись, что текстовый редактор точно хранит имя файла - без конца .txt в конце.

Elpie
источник
1
Это на самом деле вариант, с которым я в конечном итоге пошел. Работает отлично.
Сахас Катта
1
Помните , что приведенный выше синтаксис действителен только до Apache 2.2! Затем используйте Require all denied(заменив эти две внутренние строки) для Apache 2.4 и выше. Более подробная информация здесь
Фрэнк
5

Вот мое взятие:

RewriteRule (?:readme|license|changelog|-config|-sample)\.(?:php|md|txt|html?) - [R=404,NC,L]
  • 404 (не существует), а не 403 (запрещено), чтобы избежать какой-либо подсказки о существовании.
  • также в подпапках (т.е. темах и плагинах, которые могут предложить возможности атаки)
  • нечувствительный к регистру, гибкий с расширением, также перехватывает README.html или license.html (не стесняйтесь добавлять типичных подозреваемых, таких как changelogs | faq | contributing)

Лично я бы тоже заблокировал:

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

NB:

  • '?:' просто объявляет, что скобка не соответствует (не важно).
  • требует, чтобы RewriteEngine был on (скорее всего, есть. было бы редко, чтобы использовать WordPress без ... (уродливые постоянные ссылки и т. д.)).
  • вставить перед тем в # BEGIN WordPressразделе в вашем .htaccess
Фрэнк Нок
источник
3
add_action('core_upgrade_preamble','my_function_to_delete_files');

Изменить: вы также можете попробовать эти

add_action('upgrader_pre_install','my_function_to_delete_files');
add_action('upgrader_post_install','my_function_to_delete_files');
Атиф Мухаммед Аминуддин
источник
Спасибо, я разобрался с функцией php unlink, и она работает, но одна проблема. Представленная вами зацепка, кажется, выполняется, просто зайдя в раздел «Обновления» на панели инструментов. Есть ли еще одна ловушка для после обновления?
Сахас Катта
1
Я посмотрю и дам вам знать
Атиф Мухаммед Аминуддин
@Sahas @ atif089 Вам удалось заставить это работать?
INT
Вместо удаления (если вы действительно хотите прочитать файл readme!), Вы можете использовать это в своей функцииchmod("/path/to/readme.txt", 0640);
Bysander 10.10.16