Добрый день, уважаемые читатели блога Site on! Комментарий к прошлой статье о скрытии признаков Joomla заставил меня немного углубиться в эту тему. В этой статье я расскажу, как скрыть ещё один характерный признак Joomla, а также как скрыть любую CMS от любого сервиса проверки.
В этот раз могу смело утверждать, что мне удалось скрыть свою CMS от абсолютно любого online сервиса, даже от тех, которые заточены только под конкретную CMS, например, http://isthissitebuiltwithdrupal.com
Однако плагин Wappalyzer всё ещё остаётся не решённой задачей, скоро вы поймёте почему, а пока давайте как раз о нём и поговорим.
Как скрыть свою CMS от плагина Wappalyzer ?
В первом комментарии к прошлой статье с нами поделились ссылкой на исходники этого плагина, чтобы не заставлять вас переходить по ссылке выложу здесь критерии проверки для наиболее популярных CMS (Joomla, Wordpress, Drupal):
Код:
"Joomla": {
"url": "option=com_",
"meta": { "generator": "Joomla!(?: ([\\d.]+))?\\;version:\\1" },
"html": "(?:<div[^>]+id=\"wrapper_r\"|<[^>]+(?:feed|components)/com_|<table[^>]+class=\"pill)\\;confidence:50",
"headers": { "X-Content-Encoded-By": "Joomla! ([\\d.]+)\\;version:\\1" },
"env": "^(jcomments|Joomla)$",
"implies": "PHP"
},
"WordPress": {
"meta": { "generator": "WordPress( [\\d.]+)?\\;version:\\1" },
"html": "]+wp-content",
"env": "^wp_username$",
"implies": "PHP"
},
"Drupal": {
"script": "drupal\\.js",
"html": "<(?:link|style)[^>]+sites/(?:default|all)/(?:themes|modules)/",
"headers": { "X-Drupal-Cache": ".*", "X-Generator": "Drupal(?:\\s([\\d.]+))?\\;version:\\1", "Expires": "19 Nov 1978" },
"env": "^Drupal$",
"implies": "PHP"
}
В общем, я пришёл к выводу, что это слишком трудозатратно, а профита не так уж и много. И я имею ввиду раздел html, из которого видно, что нужно как минимум исправлять все ссылки подключаемых скриптов и стилей и прочего.
Хотя может быть я ошибаюсь, и кто-то уже давно решил эту задачу?
Однако, не смотря на то, что плагин я не одолел, я заметил ещё один характерный признак Joomla, по которому блуждающие боты смогут определить Вашу CMS. Это посылаемые заголовки сервера. Я как-то читал тему на форуме, в которой писали что-то типа: «Настройте правильные заголовки, и вашу CMS будет практически невозможно распознать». Это конечно пыль в глаза, так как этого мало, но доля истины в этом есть, вполне возможно, что некоторые боты распознают CMS Joomla и другие CMS только по заголовкам сервера.
Так вот Joomla посылает их аж два: один посылает слово Joomla, а второй даже её версию - Joomla25. Исправить это очень легко, заходим в файл \libraries\joomla\application\web.php и ищем 449 строку, в которой будет такой фрагмент:
$this->setHeader('X-Content-Encoded-By'
Меняем всю эту строку на следующую:
$this->setHeader('X-Content-Encoded-By', 'unknown');
Теперь заходим в следующий файл \libraries\joomla\environment\response.php и ищем 299 строку, которая будет содержать такой фрагмент:
self::setHeader('X-Content-Encoded-By'
Меняем её на:
self::setHeader('X-Content-Encoded-By', 'unknown');
Готово, мы скрыли ещё один характерный признак использования Joomla.
Как скрыть движок сайта от builtwith.com и любого другого сервиса проверки CMS?
Всё написанное далее уже никак не относится к оптимизации сайта, это скорее решение конкретной задачи.
После раздумий о том, как можно было бы проще скрыть CMS от Wappalyzer, я пришёл к выводу, что чем проделывать объёмную работу, лучше рубить проблему под корень. Я решил, что нужно закрыть доступ к сайту для всех сервисов проверки, чем изменять структуру всей CMS, а как это сделать? Например, банальным "баном" по IP.
После этого, в ходе незамысловатых манипуляций, я узнал IP всех интересующих меня сервисов… ну что, начнём?
Буду краток, впишете этот код в любом месте файла .htaccess, который лежит в корне вашего сайта:
Order Allow,Deny Allow from All # Диапозон ITrack.ru deny from 144.76. # Диапозон 2ip.ru deny from 188.40.74. # IP адрес buildwith.com, вроде IP статичен deny from 198.27.69.78 # Но если вдруг окажется, что нет, то вот весь диапозон buildwith.com. # Если решили перестраховаться и вписать весь диапозон, то предыдущий IP # вписывать не надо, он входит в диапозон ниже: deny from 198.22.98.0/23 deny from 198.22.100.0/22 deny from 198.22.104.0/21 deny from 198.22.112.0/20 deny from 198.22.128.0/17 deny from 198.23.0.0/16 deny from 198.24.0.0/13 deny from 198.32.0.0/14 deny from 198.36.0.0/19
После вставки этого кода, ни один сервис для проверки CMS не сможет распознать движок вашего сайта и любые другие используемые Вами технологии, так как сервисы в ответ будут получать ошибку 403 (доступ запрещён).