Скрываем признаки CMS Joomla от посторонних глаз

Скрыть признаки Joomla

Сегодня будем говорить о возможности сокрытия от всех посетителей (от программистов конечно скрыть будет гораздо сложнее) следов признаков CMS Joomla. Все действия, которые мы проведем, для затруднения ее идентификации и предотвращения неправомерных действий и посягательства на целостность интернет ресурса. Пользователи часто забывают о многих признаках CMS Joomla! Попробуем разложить по полочкам эти признаки и описать способы избавлений от них. Эта статья не будет окончательно, так как все охватить очень сложно, но по ходу поступлений комментариев и замечаний Вы можете помочь ее дополнить и усовершенствовать.

Итак, рассмотрим все известные мне признаки, по которым мы в первую очередь пытаемся идентифицировать систему управления контентом Joomla и сразу же предложим пути, как от них избавиться!

1. Копирайты внизу страницы.

Не все стремятся скрыть движок сайта и поэтому даже не убирают копирайты: например Joomla! is Free Software released under the GNU/GPL License.

Решение
Joomla 1.0.x

После установки Joomla! внизу страницы мы можем наблюдать примерно такую картину:

«© 2009 Site Name
Joomla! is Free Software released under the GNU/GPL License.»

Изучив код шаблона (index.php вашего шаблона) мы обнаруживаем такую строку:

 

Удалив ее, можно избавиться от вывода копирайтов в подвале сайта. Но только для этого шаблона. Если у вас есть вредная привычка часто менять шаблоны, есть смысл сделать небольшой хак, что б избавиться от этого раз и навсегда
Открываем файл includes/footer.php и видим следующие стоки:
Этот div выводит значок копирайта, текущий год и название вашего сайта.

<div align="center">

&copy;

<?php echo mosCurrentDate( '%Y' ) . ' ' .

$GLOBALS['mosConfig_sitename'];?>

</div>
А этот div выводит версию движка и лицензию.

<div align="center">

<?php echo $_VERSION->URL; ?>

</div>

Удаляем или редактируем как нужно.

Joomla 1.5.x

В линейке 1.5.x вывод копирайтов осуществляется в корне отличным способом и убрать его можно как минимум тремя способами:

а) В менеджере модулей отключить вывод модуля "Footer" (mod_footer). Но в этом случае исчезнуть все копирайты, а не только "joomla-овские" (это мне кажется не вариант);
б) В языковом файле \language\ru-RU\ru-RU.mod_footer.ini в строках:
FOOTER_LINE1=
FOOTER_LINE2=

Убрать все, что справа от знака равно
в) В файле \modules\mod_footer\tmpl\default.php отключить вывод 2-ой строки, удалив строку:

<div><?php echo JText::_( 'FOOTER_LINE2' ); ?></div>


2. Ссылки на страницы

Стандартные ссылки у Joomla! выглядят подобным образом:
http://site.ru/index.php?option=com_frontpage&Itemid=1
http://site.ru/index.php?option=com_content&task=view&id=14&Itemid=1
http://site.ru/content/view/14/1/ и т.д. и т.п.

Решение

Чтобы изменить стандартный тип ссылок на внутренние страницы Joomla! сайта необходимо использовать сторонние компоненты, которые могут создавать любые ссылки на внутренние страницы вашего сайта – sh404SEF, ARTIO JoomSEF, NuSEF (бесплатные), SEF Advance (платный) и другие. Обзор этих компонентов выходит за рамки этой статьи.

3. Адрес админ панели.

Проверяем наличие админки по стандартному адресу Joomla! – Ваш_сайт/administrator

Наверное это первое чтобы я сделал, если хотел узнать какая CMS управляет сайтом.

Решение

Всем известно что вход в административную часть сайта на CMS Joomla! осуществляется через Ваш_сайт/administrator
Есть два способа скрыть вход в админку.
1. Средствами сервера: поставить пароль на папку administrator
В папке administrator создаем такой .htaccess:
AuthName "For Registered Users Only"
AuthType Basic
AuthUserFile /pub/site.ru/.htpasswd
require valid-user
</Files>

где значение AuthName будет выводиться для посетителя и может использоваться для пояснения запроса авторизации. Значение AuthUserFile указывает на место, где хранится файл с паролями для доступа к данной директории. Этот файл создается специальной утилитой htpasswd.exe.
Но! У этого способа есть один очень существенный недостаток: если используются расширения у которых файлы обращаются к папке администратора (например языковый файл или другие), то вместо требуемого пользователь столкнется с предложением ввести логин и пароль (по отзывам посетителей, а именно SadowXak)
Поэтому переходим к способу 2.
2. Конечно предпочтительней средствами Joomla: поставить специально предназначенные для этого расширения.
Например плагин для Joomla! 1.5 jSecure Authentication. При переходе на страницу  Ваш_сайт/administrator он включает заданную переадресацию. В админку можно попасть, только задав ключевое слово в адресной строке, таким образом адрес доступа к админ панели будет иметь такой вид: Ваш_сайт/administrator/?password

4. Meta – теги сайта. Description, keywords и Generator.

Некоторые администраторы сайтов и копирайтеры забывают изменить описание сайта и его ключевые слова. В итоге в исходном коде страницы мы можем наблюдать следующее:
<meta name="description"
content="Joomla - the dynamic portal engine and content management system" />
<meta name="keywords" content="Joomla, joomla" />

А также тег generator, который генерируется ядром:
<meta name="Generator"
content="Joomla! - Copyright (C) 2005 - 2007 Open Source Matters. All rights reserved." />

Решение
1.Содержимое meta-тегов Description и Keywords прописывается в глобальных настройках сайта и означает не что иное, как описание сайта и его ключевые слова. Просто не забывайте заполнять эти данные (встречается и такое). 2. А вот на meta-тег Generator без редактирования кода мы повлиять не сможем.
а) Generator для Joomla! 1.0.x:
В исходном коде страниц видим:
<meta name="Generator" content="Joomla! - Copyright (C) 2005 - 2007 Open Source Matters.
All rights reserved." />
Данная строка выводится в функции mosShowHead() файла includes/frontend.php, строка 195 (для Joomla 1.0.15):
$mainframe->addMetaTag( 'Generator', $_VERSION->PRODUCT . ' - ' . $_VERSION->COPYRIGHT);
Для удаления этой информации из кода страниц сайта необходимо закомментировать или удалить эту строчку.
б) Generator для Joomla! 1.5.x:
В исходном коде страниц видим:
<meta name="generator" content="Joomla! 1.5 - Open Source Content Management" />
Есть два способа влияния на мета-тег Generator: путем хака ядра и внесением кода в шаблон.
Первый способ (хак ядра Joomla!) подходит тем, кто не планирует постоянно обновлять ядро сайта и/или часто меняет шаблоны сайта.
Открываем следующие файлы:
libraries\joomla\document\document.php
libraries\joomla\document\html\renderer\head.php
Если хотим просто изменить эту строку, то в файле document.php находим примерно 85 строку:
var $_generator = 'Joomla! 1.5 - Open Source Content Management';
и вставляем свое внутрь кавычек ‘ ‘
Если хотим совсем удалить этот мета тег, то в файле head.php, комментируем // строку (примерно 83):
$strHtml .= $tab.'<meta name="generator" content="'.$document->getGenerator().'" />'.$lnEnd;

Второй способ (правка шаблона), более мягкий и не требует вмешательства в код ядра Joomla! (так как править будем шаблон, то обновление Joomla не уберет наши изменения).
Где-то между тегами <head> и </head> вставляем следующую строку:

<?php $this->setGenerator('Ваш мета-тег geneator');?>

Или же оставляем пустое значение мета-тега:

<?php $this->setGenerator(''); ?>

5. Просмотр позиций для модулей.

При просмотре сайта по адресу Ваш_сайт/?tp=1 можно легко убедиться, что сайт работает именно на CMS Joomla! Ведь придя на сайт, набрав этот адрес и увидев позиции модулей это легко понять.

Исключаем возможность просмотра позиций для модулей через Ваш_сайт/?tp=1
Для Joomla! 1.0.x
Для этого нам надо сделать небольшой хак.
Открываем файл /includes/frontend.php
Ищем примерно 129-135 строки (для Joomla! 1.0.15):
$tp = intval( mosGetParam( $_GET, 'tp', 0 ) );
if ($tp) {
echo '<div style="height:50px;background-color:#eee;
margin:2px;padding:10px;border:1px solid #f00;color:#700;">';
echo $position;
echo '</div>';
return;  
}
Удаляем их, либо комментируем.

Для Joomla! 1.5.x
Открываем файл /libraries/joomla/application/module/helper.php
Ищем примерно 96-103 строки:
if(count($result) == 0) {
   if(JRequest::getBool('tp')) {
      $result[0] = JModuleHelper::getModule( 'mod_'.$position );
      $result[0]->title = $position;
      $result[0]->content = $position;
      $result[0]->position = $position;
}
}

Комментируем их, добавляя в начало каждой строки //.
Далее ищем примерно 199-201 строки:
if(JRequest::getBool('tp')) {
$attribs['style'] .= ' outline';
}

Комментируем их, добавляя в начало каждой строки //.

6. Файл Robots.txt.

Просмотрев этот файлик по адресу Ваш_сайт/robots.txt можно также с большей долей вероятности определить CMS:
User-agent: *
Disallow: /administrator/
Disallow: /cache/
Disallow: /components/

Решение

Файл Robots.txt является одной из главных составляющих в продвижении сайта впоисковых системах. По этому его удаление я считаю неприемлемо. Однако для его сокрытия я бы предложил переместить его в какую нибудь папку сайта, но боюсь не все поисковые системы смогут его найти, только если в инструментах веб разработчика поисковой системы можно указать путь к файлу Robots.txt.

7. Постраничная навигация сайта

Иногда достаточно одного взгляда на построение постраничной навигации:
<< В начало < Предыдущая 1 2 3 4 5 Следующая > В конец >> и будет понятно, что сайт управляется CMS Joomla.

Решение

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

8.    Содержимое папок сайта.

На некоторых хостах можно посмотреть содержимое всех папок сайта: например Ваш_сайт/components

Если набрать адрес существующей папки и вам не будет в ответ страница не найдена или вы увидите ее содержимое, то это значит, что на Вашем сервере нет защиты от просмотра.
Это дает возможность злоумышленнику дополнительные плюсы при изучении вашего сайта. Избежать открытого списка можно двумя способами:
1. В .htaccess или в конфигурации apache создать директиву запрещающую просмотр:
Options -Indexes
2. В каждую директорию положить пустой файл index.html. По умолчанию загружается файл с названием index (.htm, .html, .php и т.д.).

9. Стандартные пути к шаблону и название соответствующих классов (зашитых в ядро).

Изменить стандартные названия классов Joomla наверное не получится. Так понимаю это самая главная проблема для тех кто желает скрыть эту CMS. Возможно в скором времени я найду это решение, но пока, облазив большущее количество сайтов так ничего путного не нашел.

10. Стандартная иконка Joomla!

Обычно создатели сайта чуть ли не в первую очередь хотят изменить стандартную иконку сайта построеного на Joomla на свою, красивую и информативную. Если оставить стандартную, то любой кто видел ее хоть раз поймет что это за сайт.  Как поменять читаем ниже...

Решение

1. В первую очередь запомним, что иконка сайта favicon.ico находится в корне сайта. Вы можете создать свою иконку (например с помощью удобного сервиса http://favicon.ru) и загрузить ее в корень.

2. Второй вариант - иконка помещается в папку вашего шаблона. Можно также прописать в index.php вашего шаблона в блоке <head>
<link rel="icon" href="http://Ваш_сайт.ru/путь_к_иконке/favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="http://Ваш_сайт.ru/путь_к_иконке/favicon.ico" type="image/x-icon">

11. Ошибка 404

После ввода заведомо несуществующего адреса, Joomla! выдает

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

Страница 404 компонент не найден Joomla

Решение

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

12. Упоминание имени домена в пути к CSS

Признаком CMS Joomla так же можно считать такой признак: в html коде страницы сайта Joomla, в пути к файлу описания стилей css, упоминается имя домена в таком виде:

/templates/имя_домена/css/template_css.css


 

В заключении хочу сказать, что как бы владельцы сайтов ни пытались скрыть на какой CMS работает их сайт, человек работавший с этой системой всегда найдет ее признаки, как бы их ни пытались скрыть.

Главное, что прочитав этот пост, вы сделаете много из описанного и будете правы. Ведь главная мысль которая вложена в эту статью не защита сайта, а его дополнительная настройка. До "встречи" на "страницах" Talk-IT.com.ua.{odnaknopka}

Joomla SEF URLs by Koskv