Какие шаги предпринять, чтобы скрыть тот факт, что сайт использует WordPress?

142

У меня есть веб-сайт, для которого мы стараемся быть осторожными в том, что мы используем WordPress. Какие шаги мы можем предпринять, чтобы сделать его менее очевидным?

РЕДАКТИРОВАТЬ - Важное примечание безопасности:

Пожалуйста, поймите, что сделать это совершенно невозможно в соответствии с ответом Марка , поэтому не полагайтесь на это в качестве меры безопасности.

Casebash
источник
7
Почему вы хотите скрыть, что вы используете Wordpress?
Вади М.
15
@Wadih: потому что мне сказали
Casebash
5
Это безопасность по неизвестности. Если они действительно хотят, кто-то может сопоставить поведение поколений страниц и доказать, что он работает на движке WordPress.
Вади М.
28
@ Вадих М. - «Безопасность от неизвестности» - не единственная причина этого. Один из моих клиентов хочет того же, но хочет этого, потому что хочет иметь возможность продавать свои хостинговые услуги клиентам, которые отказались бы от этого, заплатив максимальный доллар, если бы они подумали: «Черт, они просто используют WordPress». Так что это игра для брендинга и восприятия, а не для безопасности, по крайней мере, для моего клиента.
MikeSchinkel
2
Шесть лет на очень многих сайтах используют WordPress, никто не поверит вам в любом случае. ;-)
cjbj

Ответы:

128

Самые большие раздачи WordPress между <head> </head>тегами.

Пример вывода содержимого WordPress-заголовка по теме Twentyten и способы его удаления:

<link rel="profile" href="http://gmpg.org/xfn/11" /> 

Удалить прямо из header.php

 <link rel="stylesheet" type="text/css" media="all" href="http://example.com/wp-content/themes/twentyten/style.css" /> 

Скрыть WordPress, вызвав вашу таблицу стилей из другого места и измените каталог wp-content. WordPress требует, чтобы ваша тема включала некоторую базовую информацию в начало style.css (style.css должен находиться в корневом каталоге тем). Вам нужно будет создать альтернативный CSS и вызывать его из своей головы. WordPress не требует использования темы style.css, он только должен находиться в каталоге тем.

Удалить прямо из header.php

<link rel="alternate" type="application/rss+xml" title="Example Blog &raquo; Feed" href="http://example.com/feed/" /> 
<link rel="alternate" type="application/rss+xml" title="Example Blog &raquo; Comments Feed" href="http://example.com/comments/feed/" />    
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://example.com/xmlrpc.php?rsd" /> 
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://example.com/wp-includes/wlwmanifest.xml" /> 
<link rel='index' title='Example Blog' href='http://example.com/' /> 
<meta name="generator" content="WordPress 3.1-alpha" /> 

Чтобы удалить эти дополнительные ссылки, вы можете добавить фильтр в functions.php

// remove junk from head
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'index_rel_link');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'feed_links_extra', 3);
remove_action('wp_head', 'start_post_rel_link', 10, 0);
remove_action('wp_head', 'parent_post_rel_link', 10, 0);
remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0);

Вы можете изменить каталог плагинов и каталог wp-content в файле wp-config.php, но у вас могут возникнуть некоторые проблемы, если ваша тема или какие-либо плагины не используют правильный метод для вызова файлов.

define( 'WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'] . '/new-wp-content' );

Установите WP_CONTENT_URL для полного URI этого каталога (без косой черты), например

define( 'WP_CONTENT_URL', 'http://example/new-wp-content');

Необязательно Установите для WP_PLUGIN_DIR полный локальный путь к этому каталогу (без косой черты), например

define( 'WP_PLUGIN_DIR', $_SERVER['DOCUMENT_ROOT'] . '/new-wp-content/new-plugins' );

Установите WP_PLUGIN_URL для полного URI этого каталога (без косой черты), например

define( 'WP_PLUGIN_URL', 'http://example/new-wp-content/new-plugins');

PLUGINS

Имейте в виду, что некоторые плагины, такие как Akismat, All in One SEO, W3-Total-Cache, Super Cache и многие другие, добавляют комментарии к выводу HTML. Большинство из них легко изменить, чтобы удалить комментарии, но ваши изменения будут перезаписаны при каждом обновлении плагинов.

WP-включает в себя

Каталог wp-includes содержит jquery и различные другие js-файлы, которые темы или плагины будут вызывать с помощью wp_enqueue_script (). Чтобы изменить это, вам нужно отменить регистрацию скриптов WordPress по умолчанию и зарегистрировать новое местоположение. Добавьте к functions.php:

function my_init() {
    if (!is_admin()) {
        // comment out the next two lines to load the local copy of jQuery
        wp_deregister_script('jquery');
        wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js', false, '1.3.2');
        wp_enqueue_script('jquery');
    }
}
add_action('init', 'my_init');

Это должно быть сделано с каждым скриптом, используемым вашей темой или плагинами.

Chris_O
источник
Chris_O : Отличный ответ! Вы, вероятно, также должны добавить, что если они используют плагины или темы, многие из них легко идентифицируются; то есть, если кто-то использует плагин akismet или all-in-one-seo, то это все еще довольно мертвая раздача того, кто знает, что он ищет.
MikeSchinkel
@MikeSchinkel Верно, но в то же время, как и wp-includes и wp-admin; за исключением того, что вы не можете изменить ни один из них, ни скрыть их, не ограничивая функциональность сайта.
Джон П Блох
@ Джон П Блох: Конечно, однако я бы не сказал, но я бы сказал и . :)
MikeSchinkel
3
@MikeSchinkel : для wp-admin и wp-includes вы можете делать некоторые вещи через контроль доступа apache, поэтому эти пути не будут доступны для других пользователей, а не для администратора, например, ведущий к стандартному 404.
hakre
@Chris_O: Оформление заказа register_theme_directory(), я думаю, что это здорово - скрыть каталог тем из каталога "wp-content".
2010 г.
45

Один часто пропускаемый бит - удалить readme.htmlв корне WordPress. Он не только идентифицирует установку как WP, но также имеет точную версию. И не забудьте повторить обновления.

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

Rarst
источник
5
Хороший вопрос - также, вы можете использовать ваш .htaccess, чтобы всегда запрещать доступ к readme.html, чтобы вам не пришлось беспокоиться об его повторном удалении.
Тим Мэлоун
... также см. wordpress.stackexchange.com/a/201805/13561
Фрэнк Нок
21

Я всегда использовал метод Roots Theme .
Но применение его к тем ThemeJungle обычно вызывает сильную головную боль.

Итак, начал играть с WP_CONTENT_*константами. Который я считаю гораздо менее подверженным ошибкам методом, и это то, что я сейчас работаю:

окно активности сафари
/mявляется uploadsпапкой, /tявляется themesпапкой и /t/tявляется активной папкой темы. Сайт не сложный, поэтому загружено мало активов ...


WP_CONTENTLESS

wp-config.php

Установка wp-contentв корень ( /public_html/) сайта.

/** 
 Inside WP_CONTENT, the following folders should exist: 
 /languages , /mu-plugins , /plugins , /themes , /upgrade , /uploads  

 The WP_CONTENT_* definitions bellow REMOVE the existence of the /wp-content folder 
 and makes its contents reside in the ROOT of your site

 UTTERMOST attention is necessary when doing file maintenance activities in the server (i.e.: WP upgrades, new Webmaster...), 
 as the Themes and Plugins folders are meant to be renamed to /t and /p (serious candidates for unthoughful removal)

 PLEASE note:
 - we change the Plugins folder in WP_PLUGIN_* definitions
 - the Themes folder is changed by a MustUse Plugin 
   (/mu-plugins/set-extra-themes-folder.php)
 - the Uploads folder is changed in WordPress settings page 
   (http://example.com/wp-admin/options-media.php)
 - the hardcode path to be used in WP_CONTENT_DIR and WP_PLUGIN_DIR can be checked using an action inside the set-extra-themes-folder Plugin (check the comments in this file)
*/
define( 'WP_CONTENT_DIR', '/www/htdocs/username/public_html' );
define( 'WP_CONTENT_URL', 'http://www.example.com' );

define( 'WP_PLUGIN_DIR', '/www/htdocs/username/public_html/p' );
define( 'WP_PLUGIN_URL', 'http://www.example.com/p' );

Я спрашивал об этом в [wp-hackers] - Есть ли недостатки в установке WP_CONTENT_DIR (и URL) на DOCUMENT_ROOT? где Джон Блэкборн 1 , Майк Литтл 2 и Отто 3 были достаточно любезны, чтобы дать совет:

1
У меня была активная структура на сайте в течение последних 18 месяцев, и я не видел никаких проблем. Как и при любом изменении местоположения каталога контента, вам нужно будет дважды проверить все плагины, которые вы добавляете на сайт, не предполагая, что каталог контента находится по адресуwp-content.

2
Есть обсуждения в сети, которые$_SERVER['DOCUMENT_ROOT']могут быть подвержены взлому. В этом случае это чрезвычайно опасно, потому что есть много мест, которыеrequire()илиinclude() WP_CONTENT_DIR. 'что-то';

3
В некоторых случаях содержимое$_SERVERможет быть совершенно безопасным, но в целях безопасности лучше всегда относиться к нему как к ненадежным данным. Для этого конкретного случая жестко закодируйте каталог.


Новая папка тем

/mu-plugins/set-extra-themes-folder.php

Как нет никаких WP_THEMES_*констант, нам нужна функция register_theme_directory () в « Зарегистрировать каталог , который содержит темы. »
Пробовал установить дополнительный каталог в корневом каталоге , но результаты смешно (т.е. она не работает).

<?php
/*
    Plugin Name: Set Extra Themes Folder
    Version: 1.0
    Description: Allows the directory - http://example.com/t - to be used as an extra theme's directory
    Plugin URI: http://wordpress.stackexchange.com/questions/1507
    Author: brasofilo
    Author URI: http://rodbuaiz.com
*/


/**
 * Remove the comment from the following line to know the correct path to put in register_theme_diretory()
*/
//add_action( 'admin_head', 'brsfl_alert_directory_path' );

function brsfl_alert_directory_path()
{
    echo '<script type="text/javascript">
        alert("Directory: '.$_SERVER['DOCUMENT_ROOT'].'");
    </script>';
}


/**
 * The following will enable the directory "t" to be used as an EXTRA Themes directory
*/
register_theme_directory( '/www/htdocs/username/public_html/t' );


/**
 * De-registering default scripts in wp-includes for CDN ones
*/
add_action('init', 'brsfl_init_scripts');

function brsfl_init_scripts() 
{
    if ( !is_admin() ) 
    {
        wp_deregister_script( 'jquery' );
        wp_deregister_script( 'swfobject' );
        wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js', false, '1.7.1' );
        wp_register_script( 'swfobject', 'https://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js', false, null, true );
        wp_enqueue_script( 'jquery' );
        wp_enqueue_script( 'swfobject' );
    }
}

Папка загрузок

/wp-admin/options-media.php

Вместо http://example.com/uploadsэтого будет http://example.com/m.
Снятие отметки Organize my uploads into...даст WPless вид URL ресурсов.
Если сайт работает, поиск / замена должны быть выполнены в базе данных, а файлы должны быть перемещены.
загружает настройки папки


Плагины и Head Content

Обратитесь к Cris_OОтвету в этом Q & A.


README.html

Обратитесь к RarstОтвету в этом Q & A.


Другие шаги

Как обычно, темы ThemeJungle могут вызывать определенные хаки в теме.
Как ... TimThumb не работает (!!! LOL !!!).

brasofilo
источник
13

Единственный правильный ответ: НЕВОЗМОЖНО

Так много ответов с высоким рейтингом .... время, чтобы установить рекорд. Ну, правда в том, что это практически невозможно, и даже если это так, жизнь, вероятно, слишком коротка, чтобы приложить к этому усилия. Любой ответ, который продвигает шаги, чтобы скрыть WP, является пустой тратой вашего времени и вводит вас в заблуждение, думая, что вы скрываете свой WP (это абсурд).

1) Проблема не в очевидных wp-*URL-адресах, мета-генераторе и т. Д. Сложные проблемы связаны с шаблонами, связанными с WordPress, которые домашняя система не потрудится реализовать, например, страницы автора, страницы года, месяца, дня, используйте p = В качестве допустимого параметра nnn, используйте форму комментария с классом комментариев WordPress, структурой и именами ссылок, а затем происходит самореклама плагинов для кэширования и SEO для 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"...или etc (что является прямой подсказкой, что используемая структура имеет WP)

  • Внутри страницы HTML вы легко увидите uploadsпапку, или даже если вы переименуете ее с помощью жесткого кодирования, тогда часть даты, такая как uploads/2018/05/image.jpg(или даже image-315x225.jpg), показывает типичную структуру WP.

  • так как многие сайты сейчас создаются с использованием MultiSite, он использует то есть /site/2ссылки ...

  • пингуйте любые плагины / темы readme (все они есть), например plugin-name/readme.txt, возвращение статуса 200.

  • и многие, многие, многие другие вещи, которые вы (или даже профессионалы) не сможете скрыть и просто потратите впустую свои дни!


заключение

И даже если вы приложите усилия для очистки всего, что говорит о том, что это WordPress, вам, возможно, придется повторять или, по крайней мере, перепроверять после каждого обновления плагина или ядра. Жизнь слишком коротка для этого.

Вы можете ввести в заблуждение некоторых дилетантов, но вы не можете спрятаться от хорошего инспектора. Если это сделано в качестве меры безопасности, то это безопасность по неизвестности, которая всегда неправильна, и если вам просто стыдно использовать WordPress, то позвольте мне сказать вам кое-что - никого не волнует, и даже те немногие, которые делают это, вероятно, не будут знаю, как понять это самостоятельно.

Единственное, что вас должно волновать, это то, что вы максимально защищаете WP и следите за его регулярными обновлениями.

Марк Каплун
источник
единственный правильный ответ, я хотел опубликовать это. Я отклонил все остальные ответы, так как они просто вводят в заблуждение, тратят время на попытки достичь невозможной и бессмысленной цели. Если вы позволите мне, я добавлю 2 цента в ваш ответ.
Т.Тодуа
конечно, давай.
Марк Каплун
Я также проголосовал за это. Это трата времени на сокрытие wp только для безопасности от неизвестности. Это не только не сработает, но и может нарушить функционал, сделанный неправильно.
Ремзи Кавдар
10

Вы можете использовать WordPress на одном сервере и очищать контент от другого, включая только тот, который вам нужен.

Если вам нужен RSS, вы должны сделать то же самое с этим.

По сути, это все равно, что обслуживать статические страницы с прокси или CDN, но только те биты, которые вы хотите обслуживать. Затем вы можете также использовать систему комментариев на основе JavaScript, такую ​​как Disqus.

Действительно низкое использование ресурсов, потому что здесь нет баз данных на сервере, обслуживающем контент.

AndyBeard
источник
@AndyBeard - это очень интересная идея, но для того, чтобы что-то работало, потребовалось бы много времени на разработку. Или вы знаете проект с открытым исходным кодом, где кто-то уже сделал это?
MikeSchinkel
4
Вот одно из решений wordpress.org/extend/plugins/really-static - есть несколько других
AndyBeard
7

Вы можете создать свой собственный адрес для входа в свой блог. Не используя классический путь «myblog.com/wp-admin» для доступа к своей панели мониторинга. Эта страница поможет вам в создании скрытых входов в систему, что также полезно для мер безопасности.

Так что человек, который добавляет wp-admin в ваш блог, не сможет угадать :)

Мирей Раад
источник
Ссылка устарела и плагин удален.
Кайзер
2
@kaiser: У интернет-архива Wayback Machine есть это (и, что удивительно, даже почтовый индекс);)
brasofilo
1
@kaiser brasofilo - спасибо, парень, за то, что ответили :) Я тоже держу это
Мирей Раад
5

В дополнение к вышесказанному, вам необходимо заблокировать доступ к различным wp*файлам и каталогам. Если кто-то хочет узнать, работает ли у вас WP, он может догадаться, есть ли у вас wp-settings.phpили они могут получить доступ к некоторому каталогу. Возврата 403 недостаточно, потому что он сообщает пользователю, что ресурс существует; они просто не имеют к нему доступа.

Я не эксперт по Apache, поэтому я задал этот вопрос на сервере.

Эйвери Чан
источник
3

Не забывайте, что большая часть информации заголовка http, отправляемая вместе с вашим запросом, может идентифицировать ваш сайт как работающий на WordPress. Например, если вы проверяете заголовки на следующих сайтах, это очевидно:

$ curl -I http://www.rollingstones.com/
Server: WP Engine/5.0

$ curl -I http://www.mattcutts.com
X-Powered-By: W3 Total Cache/0.9.1.3

$ curl -I http://blogs.reuters.com/us/
WP-Super-Cache: Served supercache file from PHP

Некоторые из них устанавливаются сервером, некоторые устанавливаются плагинами, поэтому я не могу сказать, как удалить 100% из них, но если вы используете PHP 5.3, вы можете использовать

header_remove("X-Foo");( http://www.php.net/manual/en/function.header-remove.php )

удалить известный заголовок PHP перед удалением вашего контента. Я не могу с уверенностью сказать, где разместить это (возможно, кто-то другой может передать эту информацию), но, вероятно, безопасно поместить ее в самый верх вашего index.php ПЕРЕД любым контентом, который отправляется в браузер.

Дэн Гейл
источник
3

Это может быть трудно достичь, если вы новичок в php и mod_rewrite. Предлагаю вам ознакомиться с разделом моего ответа. Или попробуйте сами, вы можете использовать что-то вроде этого, чтобы скрыть структуру пути wp-content / plugins:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^modules/(.*) /wp-content/plugins/$1 [L,QSA]
</IfModule>

Это изменит путь к / modules. Используйте что-то подобное для другой структуры, вам могут потребоваться некоторые расширенные изменения, см. Http://httpd.apache.org/docs/current/mod/mod_rewrite.html для получения дополнительной информации о mod_rewrite.

Если вы предпочитаете что-то из коробки, есть несколько хороших плагинов, некоторые коммерческие, также бесплатные в репозитории WordPress, я предлагаю попробовать WP Hide & Security Enhancer . Это включает в себя множество вещей и помогает изменить практически все, чтобы сделать ваш WordPress неузнаваемым. Вот некоторые особенности кода:

  • Пользовательский URL администратора
  • Пользовательский URL администратора
  • Блокировать URL-адрес администратора по умолчанию
  • Заблокируйте любой прямой доступ к папке, чтобы полностью скрыть структуру
  • Пользовательское имя файла wp-login.php
  • Заблокировать wp-login.php по умолчанию
  • Блок по умолчанию wp-signup.php
  • Блок XML-RPC API
  • Новый путь XML-RPC
  • Регулируемый URL темы
  • Новый ребенок Тема URL
  • Изменить имя файла стиля темы
  • Пользовательский wp-include
  • Блокировать пути wp-include по умолчанию
  • Блокировать дефалтирование wp-контента
  • URL пользовательских плагинов
  • Индивидуальная смена URL плагина
  • Блокировать пути к плагинам по умолчанию
  • URL новой загрузки
  • Блокировать ссылки для загрузки по умолчанию
  • Удалить версию WordPress
  • Блок метагенератора
  • Отключить смайлики и необходимый код JavaScript
  • Удалить тег пингбэка
  • Удалить wlwmanifest Meta
  • Удалить rsd_link Meta
  • Удалить wpemoji

и многое другое ..

WP-Silver
источник
2

Я не хочу повторять опции кодирования, так как они были исчерпывающе рассмотрены, другой вариант, который я знаю, что работает, это использование плагина, который скрывает wp. Я использовал этот плагин, прежде чем к удовлетворительным стандартам. Это называется скрыть мой WordPress.

NJENGAH
источник
2

Большинство ответов сосредоточены на том, чтобы скрыть WordPress в исходном коде страницы, но даже до этого WP уже выдавал себя в заголовке http стандартной установки. Просто попробуйте свой собственный сайт на сайте, подобном web-sniffer (представьте, что он IE 6, и попросите заголовок http 1.0), и вы увидите, что среди возвращаемых значений есть:

<http://www.example.com/wp-json/>; rel="https://api.w.org/"

Последний является ссылкой на API Wordpress.org . Он существует, поскольку REST API был включен в WP 4.4. Вы можете удалить его с помощью этой строки прямо в начале вашего functions.php:

remove_action( 'template_redirect', 'rest_output_link_header', 11, 0 );

Многие плагины, такие как Jetpack для коротких ссылок, также могут вставлять ссылки в заголовок http. Они могут сделать это, потому что WP имеет HTTP API , который позволяет вам манипулировать заголовками. Вы можете использовать этот интерфейс для удаления всех настроек заголовка с помощью плагинов, если вы добавите свое действие достаточно поздно в процессе.

Наконец, вы можете использовать интерфейс заголовка .htaccess для перехвата всего, что делает WP. Например, вы можете запретить отправку заголовков ссылок, включив эту строку:

<IfModule mod_headers.c>
Header unset Link
</IfModule>
cjbj
источник
0

Вы можете настроить тему, чтобы исключить всю информацию WordPress. Также удалите мета-виджет и любой виджет, который будет выводить информацию о платформе.

Лично я предпочитаю показать свою благодарность, показывая, что я использую WordPress.

Джеймс
источник
17
Благодарность это хорошо, но она не отвечает на основной вопрос.
ZaMoose
-1

Вы можете использовать плагин WPS Hide Login .
Вы входите в свой WordPress, используя wp-admin. Но вы можете перейти wp-adminна пользовательский с помощью этого плагина.

Пример:

До: http://example.com/wp-admin
После: http://example.com/custom-text-to-login

Фуксия
источник