У меня есть веб-сайт, для которого мы стараемся быть осторожными в отношении того факта, что мы используем WordPress. Какие шаги мы можем предпринять, чтобы сделать его менее очевидным?
РЕДАКТИРОВАТЬ. Важное примечание о безопасности:
Пожалуйста, поймите, что сделать это идеально невозможно в соответствии с ответом Марка, поэтому не полагайтесь на это как на меру безопасности.
Зачем вам скрывать, что вы используете WordPress?
@Wadih: потому что мне сказали
Это безопасность через неизвестность. Если они действительно хотят, кто-то может сопоставить поведение генерации страниц и доказать, что они работают на движке WordPress.
@Wadih M. — «Безопасность по неизвестности» — не единственная причина этого. Один из моих клиентов хочет того же, но они хотят этого, потому что хотят иметь возможность продавать свои услуги хостинга клиентам, которые отказались бы от этого, заплатив большие деньги, если бы подумали : «Черт возьми, они просто используют WordPress». Так что это игра брендинга/восприятия, а не безопасности, по крайней мере, для моего клиента.
Шесть лет на стольких сайтах используется WordPress, что вам все равно никто не поверит. 😉
Chris_O : Отличный ответ! Вы, вероятно, должны также добавить, что если они используют плагины или темы, многие из них легко идентифицируются; т.е. если кто-то использует плагин akismet или все-в-одном-seo, то это все еще довольно бесполезная распродажа для тех, кто знает, что они ищут.
@MikeSchinkel Верно, но в то же время то же самое относится и к wp-includes и wp-admin; за исключением того, что вы не можете ни изменить, ни скрыть их, не ограничивая функциональность сайта.
@John P Bloch: Определенно, однако я бы не сказал, но я бы сказал и. 🙂
@MikeSchinkel : для wp-admin и wp-includes вы можете делать некоторые вещи через управление доступом apache, чтобы сделать эти пути недоступными для других пользователей, кроме администратора, например, ведущих к стандартному 404.
@Chris_O: Оформить заказ
register_theme_directory()
, я думаю, было бы здорово скрыть папку темы из каталога «wp-content».Хороший момент — также можно использовать ваш.htaccess, чтобы всегда запрещать доступ к readme.html, поэтому вам не нужно беспокоиться об его удалении снова.
… также см. wordpress.stackexchange.com/a/201805/13561
Извините, ThemeForest, кажется, вы предприняли шаги для решения этой проблемы. И с хорошими руками помощи !
единственный правильный ответ, я хотел опубликовать это. Я отклонил все остальные ответы, так как они просто вводят в заблуждение, тратят время на попытку достичь невозможной и бессмысленной цели. Если вы позволите, я добавлю 2 цента к вашему ответу.
конечно, давай.
Я также проголосовал за это. Это трата времени на то, чтобы скрыть wp только из соображений безопасности. Это не только не сработает, но и потенциально может нарушить функциональность, сделанную неправильно.
@AndyBeard — Это очень интересная идея, но потребуется много времени на разработку, чтобы получить что-то работоспособное. Или вы знаете проект с открытым исходным кодом, где кто-то уже сделал это?
Вот одно решение : wordpress.org/extend/plugins/really-static — есть еще несколько
Ссылка устарела, плагин удален.
@kaiser: он есть в Internet Archive Wayback Machine (и, что удивительно, даже в почтовом индексе);)
@brasofilo Просто чтобы лучше скрыть — вот пастбин с «не истекающим сроком действия». 🙂
@kaiser brasofilo — спасибо, парень, что ответил на ответ 🙂 я тоже храню это
Благодарность — это хорошо, но она не отвечает на главный вопрос.
Самые большие раздачи WordPress находятся между
<head> </head>
тегами.Пример вывода содержимого заголовка WordPress с помощью темы Twentyten и способы его удаления:
Удалить прямо из header.php
Скройте WordPress, вызвав таблицу стилей из другого места и изменив каталог wp-content. WordPress требует, чтобы ваша тема включала некоторую основную информацию в верхней части файла style.css (style.css должен находиться в корневом каталоге темы). Вам нужно будет создать альтернативный CSS и вызвать его из головы. WordPress не требует, чтобы вы использовали файл style.css тем, он только должен находиться в каталоге тем.
Удалить прямо из header.php
Чтобы удалить эти лишние ссылки, вы можете добавить фильтр в functions.php.
Вы можете изменить каталог плагинов и каталог wp-content в файле wp-config.php, но у вас могут возникнуть проблемы, если ваша тема или какие-либо плагины не используют правильный метод для вызова файлов.
Установите WP_CONTENT_URL на полный URI этого каталога (без косой черты), например
Необязательно Установите WP_PLUGIN_DIR на полный локальный путь к этому каталогу (без косой черты в конце), например
Установите WP_PLUGIN_URL на полный URI этого каталога (без косой черты в конце), например
ПЛАГИНЫ
Имейте в виду, что некоторые плагины, такие как Akismat, All in One SEO, W3-Total-Cache, Super Cache и многие другие, добавляют комментарии к выводу HTML. Большинство из них легко изменить, чтобы удалить комментарии, но ваши изменения будут перезаписаны в любое время при обновлении плагинов.
wp-включает
Каталог wp-includes содержит jquery и различные другие js-файлы, которые темы или плагины будут вызывать с помощью wp_enqueue_script(). Чтобы изменить это, вам нужно будет отменить регистрацию сценариев WordPress по умолчанию и зарегистрировать новое местоположение. Добавьте в functions.php:
Это нужно будет сделать с каждым скриптом, используемым вашей темой или плагинами.
Один момент, который часто упускают — удалить
readme.html
в корне WordPress. Он не только идентифицирует установку как WP, но также имеет точную версию. И не забывайте повторять обновления.Связанный вопрос: Запрет доступа или автоматическое удаление readme.html, license.txt, wp-config-sample.php
Я всегда использовал метод Roots Theme.
Но применение его к тем ThemeJungle обычно вызывает большую головную боль.
Итак, начал играть с
WP_CONTENT_*
константами. Я считаю, что это гораздо менее подверженный ошибкам метод, и это то, что я работаю прямо сейчас:/m
uploads
папка, папка и папка/t
активной темы. Сайт не сложный, поэтому загружено мало ассетов…themes
/t/t
WP_CONTENTLESS
wp-config.php
Установка
wp-content
в корень (/public_html/
) сайта.Я спрашивал об этом в [wp-hackers]. Есть ли недостатки в установке WP_CONTENT_DIR (и URL) в DOCUMENT_ROOT? , где Джон Блэкборн 1, Майк Литтл 2 и Отто 3 любезно посоветовали:
Новая папка с темами
/mu-plugins/set-extra-themes-folder.php
Так как констант нет
WP_THEMES_*
, нам нужна функция register_theme_directory(), чтобы » зарегистрировать каталог, содержащий темы «.Попытался установить дополнительный каталог в корень, но результаты забавны (т.е. это не работает).
Папка загрузок
/wp-admin/options-media.php
Вместо

http://example.com/uploads
, будетhttp://example.com/m
.Снятие флажка
Organize my uploads into...
придаст URL-адресам активов вид WPless.Если сайт работает, необходимо выполнить поиск/замену в базе данных и переместить файлы.
Плагины и главный контент
Обратитесь к
Cris_O
ответу в этом вопросе и ответе.Readme.html
Обратитесь к
Rarst
ответу в этом вопросе и ответе.Другие шаги
Как обычно, темы ThemeJungle могут предлагать определенные хаки в теме.
Вроде… TimThumb не работает (!!!смеется!!!).
Единственный верный ответ: НЕВОЗМОЖНО
Так много ответов, получивших высокие оценки… пора расставить все по своим местам. Что ж, правда в том, что это практически невозможно, и даже если это так, жизнь, вероятно, слишком коротка, чтобы прилагать к этому усилия. Любой ответ, который продвигает шаги по сокрытию WP, является пустой тратой вашего времени и вводит вас в заблуждение, думая, что вы скрываете свой WP (что абсурдно).
1) Проблема заключается не в очевидных
wp-*
URL-адресах, мета-генераторе и т. д. Сложные проблемы связаны с шаблонами, связанными с WordPress, которые домашняя система не будет реализовывать, например, страницы авторов, страницы года, месяца, дня, используйте p = nnn в качестве допустимого параметра, иметь форму комментария с классом комментариев WordPress, структурой и именами ссылок, а затем есть самореклама плагинов кэширования и yoast SEO и, возможно, многих других плагинов, которые вы видите только при просмотре самого HTML.2) Есть другие неучтенные методы, которые показывают существование WP (и вы не можете победить):
Даже заголовок ответа php (как отметил Дэн Гейл ниже моего ответа) возвращает конкретный заголовок WP.
Любой может просто запросить любой из десятков корневых файлов.php:
site.com/wp-cron.php
илиsite.com/xmlrpc.php
(или и т. д., которые вы не можете скрыть), и ответ заголовка будет200
вместо404 not found
.любой может проверить конечные точки json, чтобы получить конкретный ответ WP.
Внутри страницы HTML многие файлы
.css
или.js
файлы содержат определенные фразы, которые явно относятся к WP.Внутри страницы HTML легко найти классы elements/css, такие как
<div class="entry-content post-14"...
или и т. д. (что является прямым намеком на то, что используемая структура принадлежит WP)Внутри страницы HTML вы легко увидите
uploads
папку, или даже если вы переименуете ее с помощью жесткого кодирования, тогда часть даты, напримерuploads/2018/05/image.jpg
(или дажеimage-315x225.jpg
), покажет типичную структуру WP.так как многие сайты сейчас создаются с помощью MultiSite, он использует т.е.
/site/2
в ссылках…пинговать ридми любых плагинов/тем (все они есть), типа
plugin-name/readme.txt
, возвращая статус200
.и много-много-много других вещей, которые вы (или даже профессионалы) не сможете скрыть и просто потратите зря свои дни!
заключение
И даже если вы приложите усилия для очистки всего, что указывает на то, что это WordPress, вам, возможно, придется переделывать или, по крайней мере, перепроверять после каждого обновления плагина или ядра. Жизнь слишком коротка для этого.
Можно ввести в заблуждение некоторых дилетантов, но от хорошего инспектора не спрячешься. Если это сделано из соображений безопасности, то это безопасность через неизвестность, что всегда неправильно, и если вы просто стыдитесь использования wordpress, то позвольте мне сказать вам кое-что — никого это не волнует, и даже те немногие, кто это делает, вероятно, не будут этого делать. умеете догадываться сами.
Единственное, о чем вы должны заботиться, это о том, чтобы вы защищали WP как можно больше и следили за его регулярными обновлениями.
Вы можете иметь WordPress на одном сервере и очищать свой контент с другого, включая только тот контент, который вам нужен.
Если вам нужен RSS, вам придется сделать то же самое с этим.
По сути, это будет похоже на обслуживание статических страниц через прокси или CDN, но только те биты, которые вы хотите обслуживать. Затем вы также можете просто использовать систему комментариев на основе javascript, такую как Disqus.
Действительно низкое использование ресурсов, потому что на сервере нет баз данных, обслуживающих контент.
Вы можете создать собственный адрес для входа в свой блог. Не используя классический путь «myblog.com/wp-admin» для доступа к вашей панели инструментов. Эта страница поможет вам создать скрытые входы в систему, это также хорошо для мер безопасности.
Так что люди, которые добавляют wp-admin к вашему блогу, не смогут догадаться 🙂
В дополнение к вышесказанному вам необходимо заблокировать доступ к различным
wp*
файлам и каталогам. Если кто-то захочет узнать, работаете ли вы с WP, он может догадаться, есть лиwp-settings.php
у вас доступ к какой-либо директории. Возврата 403 недостаточно, потому что он сообщает пользователю, что ресурс существует; у них просто нет к нему доступа.Я не эксперт по Apache, поэтому я задал этот вопрос на сервере.
Не забывайте, что большая часть информации заголовка http, которая отправляется вместе с вашим запросом, может идентифицировать ваш сайт как работающий на WordPress. Например, если вы проверите заголовки на следующих сайтах, это очевидно:
Некоторые из них устанавливаются сервером, некоторые устанавливаются плагинами, поэтому я не могу сказать, как удалить 100% из них, но если вы используете PHP 5.3, вы можете использовать
header_remove("X-Foo");
( http://www.php.net/manual/en/function.header-remove.php )чтобы удалить известный заголовок PHP до того, как ваш контент будет вытолкнут. Я не могу с уверенностью сказать, где это разместить (может быть, кто-то другой сможет поделиться этой информацией), но, вероятно, безопасно поместить его в самый верх вашего index.php ПЕРЕД любым содержимым, которое отправляется в браузер.
Этого может быть трудно добиться, если вы новичок в php и mod_rewrite. Я предлагаю вам ознакомиться с разделом моего ответа. Или попробуйте сами, вы можете использовать что-то вроде этого, чтобы скрыть структуру пути wp-content/plugins:
Это изменит путь к /modules. Используйте что-то подобное для другой структуры, вам могут понадобиться дополнительные перезаписи, см. http://httpd.apache.org/docs/current/mod/mod_rewrite.html для получения дополнительной информации о mod_rewrite.
Если вы предпочитаете что-то из коробки, есть несколько хороших плагинов, некоторые коммерческие, а также бесплатные в репозитории WordPress, я предлагаю попробовать WP Hide & Security Enhancer. Это включает в себя множество вещей и помогает изменить почти все, чтобы сделать ваш WordPress неузнаваемым. Вот некоторые особенности кода:
и многое другое..
Я не хочу повторять параметры кодирования, поскольку они были исчерпывающе рассмотрены, другой вариант, который, как я знаю, работает, — это использование плагина, который скрывает wp. Я использовал этот плагин раньше для удовлетворительных стандартов. Это называется скрыть мой WordPress.
Большинство ответов сосредоточены на сокрытии WordPress в исходном коде страницы, но даже до этого WP уже выдал себя в заголовке http стандартной установки. Просто попробуйте свой собственный сайт на сайте, подобном веб-снифферу (представьте, что вы IE 6 и запросите заголовок http 1.0), и вы увидите, что среди результатов есть:
Последний является ссылкой на API WordPress.org. Он существует с тех пор, как REST API был включен в WP 4.4. Вы можете удалить его с помощью этой строки прямо в начале вашего
functions.php
:Многие плагины, такие как Jetpack для его коротких ссылок, также могут вставлять ссылки в заголовок http. Они могут это сделать, потому что у WP есть HTTP API, который позволяет вам манипулировать заголовками. Вы можете использовать этот интерфейс для удаления всех настроек заголовка плагинами, если вы добавите свое действие достаточно поздно в процессе.
Наконец, вы можете использовать интерфейс заголовка.htaccess для перехвата всего, что делает WP. Например, вы можете предотвратить отправку любых заголовков Link, включив эту строку:
Вы можете настроить тему, чтобы исключить всю информацию WordPress. Также удалите мета-виджет и любой виджет, который выводит информацию о платформе.
Лично я предпочитаю выражать свою благодарность, показывая, что использую WordPress.
Вы можете использовать плагин WPS Hide Login.
Вы входите в свой WordPress, используя
wp-admin
. Но вы можете изменитьwp-admin
его на пользовательский с помощью этого плагина.Пример:
До:
http://example.com/wp-admin
После:
http://example.com/custom-text-to-login