Joomla .htaccess

В этом материале мы разберём такие пункты, как скрытие ?tp=1 (эта команда нужна для отображения модулей в шаблоне Joomla), запрет доступа к админке Joomla, а так же я расскажу о других методах защиты с помощью файла .htaccess (этот файл находится в корневом каталоге вашего сайта и может называться htaccess.txt или .htaccess).

Зачем нужен файл htaccess в Joomla и что он из себя представляет?

Сначала разберёмся, что же из себя представляет файл htaccess. Htaccess - это файл дополнительной конфигурации для веб сервера Apache (как раз то, что нужно для Joomla). Через этот файл можно задать множество дополнительных команд и разрешений для пользователей. Находится этот файл в главном каталоге Вашего сайта (используем FileZilla для доступа к сайту на виртуальном хостинге) и действует на все файлы, каталоги и подкаталоги. Чтобы закрыть доступ к этому файлу через http (если ввести адрес сайта вида http://sayt.ru/htaccess.txt), нужно переименовать файл "htaccess.txt" в ".htaccess". Это запретит доступ к нему на уровне Apache и повысит общую безопасность Вашего проекта. С помощью этого файла можно даже запретить доступ посетителей вообще ко всему сайту. Он обладает большим количеством возможностей, но мы разберём только те, которые понадобятся нам для повышения защиты Joomla.

При покупке хостинга, нужно сразу обратить внимание на то, поддерживает ли он файл htaccess при работе с Joomla. Кроме этого, нужно узнать на какой системе работает сервер. Если сервер работает на Linux или Unix, то htaccess, скорее всего, будет поддерживаться. Вы можете сами вручную создать этот файл в блокноте или скопировать готовый (с рекомендуемыми командами для Joomla) со стандартного пакета Joomla последней версии. Если Вы не обладает достаточными знаниями в этой сфере, то не рекомендуется существенно изменять работу данного файла, так как есть риск того, что сайт перестанет работать. В любом случае - сначала всегда нужно сделать резервную копию файла или всего сайта.

Как выглядит файл .htaccess?

Изначально (когда Вы скачиваете дистрибутив с движком Joomla), файл htaccess.txt будет выглядеть примерно так (joomla скачана с сайта Joom.ru и описание работы файла переведено на русский язык):

##
# @version $Id: htaccess.txt 21064 2011-04-03 22:12:19Z dextercowley $
# @package Joomla RE
# @localized Авторские права (C) 2005 - 2011 Joom.Ru - Русский дом Joomla! Все права защищены.
# @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
# @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
# Joomla! - свободное программное обеспечение.
# Последнее изменение этого файла - 09.04.2011
##

# Установка кодировки сайта по умолчанию. При необходимости, закомментируйте.
# Строка решает проблему с "крякозябрами" в редакторе TinyMCE и текста лицензии при установке
# на Денвере и некоторых серверах с жестко прописанной кодировкой. Это на 99,9% работающее решение.
# После переименования этого файла htaccess.txt в .htaccess проблема решится.
# Если проблема осталась - перечитайте предыдущее предложение (возможно неправильно переименовали).

AddDefaultCharset utf-8

# Следующие строки - попытка исправить настройки PHP
# для полного соответствия системным требованиям Joomla.
# Раскомментируйте (символ комментария - #) нужные строки,
# если настройки вашего хоста не соответствуют рекомендациям
# системных требований Joomla.
# При возникновении 500 ошибки сервера, закомментируйте строку, вызывающую
# ошибку, или все строки с php_flag.

# php_flag register_globals Off
# php_flag display_errors Off
# php_flag file_uploads On
# php_flag allow_url_fopen off
# php_flag magic_quotes_gpc On
# php_flag magic_quotes_runtime Off

# Пример явного указания каталога для записи сессий:
# Для Windows - c:/temp
# для UNIX - /tmp

# Указанный каталог должен физически существовать и быть доступен для записи

# При необходимости, раскомментируйте строку ниже этой
# php_value session.save_path c:/temp

#####################################################
# ПРОЧТИТЕ ПОЛНОСТЬЮ, ЕСЛИ БУДЕТЕ ИСПОЛЬЗОВАТЬ ЭТОТ ФАЙЛ
#
# Строка ниже этого раздела: 'Options +FollowSymLinks' может вызвать проблему
# при некоторых конфигурациях сервера. Она необходима для использования модуля
# Apache mod_rewrite, но может быть уже настроена администратором вашего
# сервера и изменение этого параметра в .htaccess может быть запрещено.
# Если эта директива вызывает ошибку сервера, то закомментируйте строку
# (добавьте символ # в начало строки), перезагрузите в браузере сайт и
# протестируйте работу SEF-ссылок. Если они работают, то вам не надо ничего
# менять здесь, т.к. всё уже настроено администратором сервера.
#
# Строки, которые можно раскомментирвать (и использовать) имеют только один #.
# Строки с двумя символами ## раскомментировать не надо. В разделах, которые вы
# не используете, все строки должны начинаться с символа #
#
#####################################################

## Может быть закомментировано, если вызывает ошибку сервера. Смотрите примечания выше.
Options +FollowSymLinks

#
# Включение mod_rewrite

RewriteEngine On

########## Начало - Правила обработки запросов для блокировки распространенных эксплоитов
## Если у вас возникли проблемы с вашим сайтом, используйте ниже описанные операции
## Они пытаются заблокировать самые распространенные эксплоиты Joomla!
#
## Код запрета доступа к xml-файлам расширений (раскомментируйте для активации)
#<Files ~ "\.xml$">
#Order allow,deny
#Deny from all
#Satisfy all
#</Files>
## Конец кода запрета доступа к xml-файлам
# Блокировать любой запрос, пытающийся установить значение mosConfig через URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Блокировать любой запрос, пытающийся испортить base64_encode через URL
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Блокировать любой запрос, содержащий тег <script> в URL
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Блокировать любой запрос, пытающийся установить значение глобальных переменных PHP через URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Блокировать любой запрос, пытающийся изменить _REQUEST переменную через URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Перенаправлять заблокированные запросы на страницу 403 с запрещенными ошибками!
RewriteRule .* index.php [F]
#
########## Конец правил обработки для блокировки распространенных эксплоитов

# Раскомментируйте следующую строку, если URL вашего web-сервера
# не связаны напрямую с физическими путями файлов.
# Обновите ваш каталог Joomla (используйте "/" для обозначения корня сервера)

# RewriteBase /

########## Начало раздела SEF ядра Joomla!
#
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#
# Если запрошенный путь и файл не содержат /index.php и запрос еще
# не был перенаправлен на скрипт index.php
RewriteCond %{REQUEST_URI} !^/index\.php
# и запрашивается URL корня или расширения, или
# запрашиваемый URL оканчивается на одно из перечисленных расширений
RewriteCond %{REQUEST_URI} (/[^.]*|\.(php|html?|feed|pdf|raw))$ [NC]
# и запрошенный путь не соответствует пути к физическому файлу
RewriteCond %{REQUEST_FILENAME} !-f
# и запрошенный путь не соответствует пути к физической папке
RewriteCond %{REQUEST_FILENAME} !-d
# то перенаправить запрос на скрипт index.php
RewriteRule .* index.php [L]
#
########## Конец раздела SEF ядра Joomla!

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

Защита сайта с помощью веб-сервера Apache (работа с файлами .htaccess и .htpasswd)

Перед тем, как выполнять какие-либо действия с файлами .htaccess и .htpasswd, Вам нужно уточнить у своего хостера, поддерживается ли им поддержка данного типа файлов. Если поддержка осуществляется, то можно продолжать работу и изучение этого способа скрытия доступа к админке joomla.

Что из себя представляет этот способ? Этот способ представляет из себя процесс аутентификации пользователя посредством сервера Apache. Он довольно простой, но при этом очень надежно защитит доступ к Вашей административной панели сайта. Для выполнения описанных ниже действий, Вам не потребуется специальных знаний в этом вопросе, Вам нужно лишь внимательно проделать то, что я напишу и покажу на примерах.

После проделанных действий, при попытке зайти в админку сайта, пользователь увидит сообщение ввода логина и пароля. Только это будут не логин и пароль от админки, а логин и пароль от сервера Apache (даже внешне эти окна для ввода данных будут отличаться). А вот для того, чтобы сервер закрывал доступ именно в папку "administrator", а не на другие папки сайта, файлы нужно будет скидывать именно туда (то есть в ту папку, доступ к которой Вы хотите скрыть).

Принцип работы аутентификации (ввода логина и пароля)

Когда посетитель пытается зайти в определённую директорию, сервер Apache посылает заголовок 401. Браузер, которым пользуется посетитель, принимает данный заголовок, и ему открывается окно для ввода логина и пароля (эти данные могут отличаться от логина и пароля для входа в админку). После ввода данных в окне сервера Apache, он проверяет их (логин и пароль) на нахождение в специальном документе (файл .htpasswd). Если данные там есть и они введены правильно, то пользователь получает доступ к закодированной папке. А уже после этого нужно будет вводить данные для входа в админку. Кроме того, браузер ещё и запоминает область действия этих данных, чтобы при повторном заходе в папку, Вам не пришлось заново вводить данные для доступа. Если данные введены неверно или Вам просто нужно ещё раз их ввести по другой причине, то для вывода окна с вводом логина и пароля, Вам нужно будет почистить кэш Вашего браузера.

Что нужно для защиты через Apache

Вот что нам понадобиться для настройки защиты посредством Apache:

  1. Доступ к FTP Вашего сайта;
  2. Файл .htaccess. Вы можете просто создать пустой документ с названием .htaccess и в нём вбить потом нужные данные (чуть ниже напишу, какие именно);
  3. Файл .htpasswd. Так же нужно будет создать пустой текстовый файл с названием .htpasswd и данными, о которых так же будет написано ниже;
  4. Программа для генерации паролей по алгоритму MD5 htpasswd.exe (можно сделать это в режиме онлайн через специальный сервис - мы будем использовать этот способ, так как для этого не нужно скачивать и устанавливать сторонние программы на свой компьютер).

Имея под рукой все необходимые данные, можно приступать к работе. Опишу вкратце процесс: сначала нам нужно создать файл паролей .htpasswd, потом сгенерировать пароли через специальный онлайн сервис (можно через программу htpasswd.exe, если умеете ей пользоваться. Но я опишу способ генерации файлов в режиме онлайн, так как так намного быстрее и проще), затем мы создаём файл .htaccess с нужными данными и кидаем оба этих файла в папку "administrator" (ведь нам нужно защитить именно её от доступа "нехороших" людей). Вот и всё! Чуть ниже я опишу весь процесс более подробно.

Создание файла .htpasswd и генерация логина и пароля в шифре MD5 для него

Создаём текстовый файл с названием .htpasswd (сам файл пока что оставляете пустым). Далее переходим на сайт ifstudio.org и вводим там логин (я ввел admin, а Вы можете ввести что угодно), пароль (для примера я ввёл 123456) и папку, которую надо закрыть от доступа (в нашем случае - это папка administrator):

 

Нажимаете "Сгенерить" и попадаете на следующее окно данного сервиса, в котором два окошка с командами, одну из которых (верхнюю, если быть точным) нужно вставить в файл .htaccess, а нижнюю ( это логин с паролем) нужно вставить в файл .htpasswd:

 

Во второй строчке (окошко с названием "Файл .htpasswd") написаны логин и пароль (в зашифрованном виде пароль 123456 выглядит вот так: aaAN1ZUwjW7to, поэтому Вы его сначала и не узнали). Именно эти данные в таком же виде, как они написаны в окне (то есть, "admin:aaAN1ZUwjW7to"), Вам и нужно вставить в текстовый файл с названием .htpasswd. После этого Вам осталось лишь скопировать данный файл в папку administrator Вашего сайта. Теперь осталось лишь создать файл .htaccess и скопировать его туда же.

Создание файла .htaccess

В текстовом редакторе создайте файл с названием .htaccess и скопируйте в него данные, которые были указаны в первой части онлайн-генератора файлов .htaccess и .htpasswd. А именно вот эти:

AuthUserFile administrator/.htpasswd
AuthGroupFile /dev/null
AuthName "Запароленная зона"
AuthType Basic
<limit GET POST>
require valid-user
</limit>

На всякий случай, я распишу подробно, что означают эти данные:

  1. AuthUserFile administrator/.htpasswd (это означает путь к файлу .htpasswd);
  2. AuthGroupFile /dev/null (это нужно если доступ должна иметь группа людей);
  3. AuthName "Запароленная зона" (сообщение, которое будет выводиться пользователю в окне ввода логина и пароля. Этот текст предназначен для того, чтобы пользователю было понятно, куда он пытается получить доступ);
  4. AuthType Basic (это означает тип аутентификации. В нашем случае, нужно оставлять базовую аутентификацию);
  5. require valid-user (означает, что доступ разрешен всем, кто прошел проверку. Если написать required admin, то доступ будет иметь только пользователи с именем админ и так далее).

Файл .htaccess так же нужно перекинуть в папку "administrator" на Вашем сайте. Теперь всё готово. Осталось только проверить на работоспособность и убедиться в том, что мы всё сделали правильно. Для проверки нужно попробовать зайти в административную панель Вашего сайта. Если у Вас высветится такое окно, то значит Вы всё сделали правильно:

 

Но лучше попробовать ввести логин и пароль, чтобы уже точно убедиться в правильности выполненных действий. Логин нужно вводить тот, который написан в файле .htpasswd. А пароль, наоборот, не тот, который написан в этом файле (это зашифрованный вид. Шифр формата MD5), а тот, который Вы вводили на сайте онлайн генераторе (я вводил для примера 123456). После ввода данных, вход должен осуществиться. Только для входа в админку, нужно будет всё равно вводить данные для доступа (логин и пароль для доступа в админку останутся прежними, просто теперь перед их вводом, нужно будет ввести логин и пароль для Apache).

Защита доступа в админку через Панель управления Вашего хостинга

Сейчас, как правило, многие хостинговые компании поддерживают настройку данного способа защиты сайта (посредством Apache) прямо через панель управления сайтом. Для этого нужно лишь иметь доступ в эту самую панель. Это очень удобно, так как Вам не придётся возиться со всеми этими файлами, паролями и прочими данными, а просто нужно будет ввести путь к папке, которую нужно закрыть, и прописать к ней пароль. При выборе и покупке хостинга, Вы можете выбрать, какую панель управления использовать для Вашего сайта (основные панели для управления - это Cpanel и ISPmanager). Мне довелось поработать и с той и с другой панелью. Особой разницы я не заметил. О защите доступа к админке Joomla через панель управления, я расскажу на примере ISPmanager, так как сейчас я пользуюсь именно этой панелью для работы. Хотя опять же повторюсь, что они схожи, так что у Вас не должно возникнуть проблем при настройке ограничения доступа к папкам и на этой панели.

Первым делом Вам нужно найти строку, которая отвечает за ограничение доступа к определённым папкам и файлам сайта. У меня она находится в категории "World Wide Web" и называется "Ограничение доступа":

 

При нажатии на кнопку "Ограничение доступа", Вы попадёте в пустое окно. Вам нужно будет нажать на кнопку "Создать" в правой верхней части экрана. Сначала откроется окно, в котором Вам нужно будет ввести путь до папки, которую нужно закрыть. В нашем случае это опять же папка "administrator":

 

Нажимаете Ок. Теперь Вы создали путь, который желаете закрыть от посторонних глах. Осталось добавить пользователя, который будет иметь доступ к данной папке. Для этого смотрим опять в правую верхнюю часть экрана и ищем там "Пользователи":

 

Нажимаете на эту картинку и опять попадаете в пустую директорию, так как ещё не создан ни один пользователь, для которого будет открыт доступ. Справа вверху опять нужно нажать "Создать". Откроется окно для добавления нового пользователя:

 

Вводите свои данные и нажимайте ОК. Всё, пользователь создан, и программа сама сохранит файл с паролем и логином там, где ей нужно. Теперь для доступа в админку у Вас будет высвечиваться точно такое же окно для ввода логина и пароля, как и при использовании предыдущего способа защиты админку joomla.

Убираем просмотр модулей шаблона через ?tp=1 с помощью файла .htaccess

Как Вы помните из статьи о расположении модулей в Joomla, узнать о том, где какой модуль находится на сайте, можно просто введя в конце страницы /?tp=1. А мы с Вами уже знаем из статьи об улучшении безопасности Joomla, что нам нужно спрятать от хакеров все упоминания о joomla, чтобы нас не нашли. Скрыть этот параметр можно многими путями, но так как сегодня мы говорим и работе с файлом .htaccess, я расскажу способ скрытия /?tp=1 именно через него. Для этого нужно просто дописать в файле .htaccess вот такой кусок кода:

##### Start ?tp=1 prevention######
RewriteCond %{QUERY_STRING} tp=(.*)
RewriteRule ^(.*)$ index.php [F,L]
##### End ?tp=1 prevention ######

Теперь любопытного пользователя, решившего просмотреть позиции модулей вашего шаблона, просто перебросит на главную страницу Вашего сайта. Этот кусочек кода можно вставить просто в самом конце документа .htaccess.

 



Joomla .htaccess - Генератор расширений Joomla и многое другое на нашем сайте посвященном работе расширений, компонентов, модулей, плагинов для линейки Joomla. Отправляйте ссылку на страницу своим друзьям и в социальные сети воспользовавшись графическими иконками выше.

Блог

Календарь приёма объявлений

Небольшой пример из повседневной практики. Организация меняет реквизиты, и они вступят в силу через  пару недель. На сайте идет приём объявлений и объявления принимаются на несколько месяцев в...

Дырка в com_content

Сегодня у товарища, сайт которого находится на старой  Joomla 1.0.3, была сильная нагрузка на сервере, просматривая логи обнаружил не вежливый запрос такого порядка: http://сайт/index2...

Лечим вирус на сайте

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

Troj/JSRedir-MH

Снова грянул гром зарежения сайтов новым вирусом  Troj/JSRedir-MH.  И так в коротко по вирусу Troj/JSRedir-MH. Вирус или троян куда интереснее чем свои предшествиники, тепер...

Доработка расширения для рассылки Send Email JK

Сегодня поделюсь немного интересной информацией для владельцев сайтов собранных ан joomla.  Рано и поздно возникает задача подписки и рассылки информации с сайта, это может быть разная постановка зада...

Привет Ie 10 регулярка

И вот и мне пришлось столкнулся с проблемами перехода на win 8 в придачу с ie 10, некоторых постоянных пользователей моих сайтов. На многих сайтах  имеющих раздел по приёму объявлений, использ...

Kunena заменяем ссылку на профиль пользователя

Всем привет, снова снова кунена, получил задание на допиливание популярного форума Kunena, сегодня потребовалось поменять ссылку на профиль пользователя. Это связано с тем, что на сайте стоит социа...

Работает на Kunena - зачем на каждой странице?

  Все у кого стоит форум kunena мешает надпись с двумя ссылкам внизу форума "Работает на Kunena". Сея надпись висит на каждой странице форма, а также страница разработчиков содержит множество вн...

Kunena избавимся от лишних quote

Для тех кто действительно делает сайт для людей, моя следующая заметка. Расскажу вам, как избавиться от лишних quote в постах на форуме kunena. У меня несколько тематических сайтов с нормальной посеща...

Kunena решаем проблему с пропажей аватаров

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

Джомлавикам

Обработка параметров расширений joomla

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

Кunena крамсаем шаблон

1. В папке \components\com_kunena\template\ваш_шаблон\ находим файл template.xml и вставляем в него такой кусок (чтобы была возможность выбора показывать это поле или нет): <param name="l...

Подключить свои классы и методы в Joomla?

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

3 новых полезных класса в Joomla 2.5

В платформе Joomla 11.3 разработчики добавлил несколько полезных новых классов для разработчиков. Рассмотрю некоторый из них - JGrid (для построения HTML таблиц), JWebClient (для получения информац...

Репозиторий файлов на Joomla средствами Apache

Создадим две вложенные директории /files/files в корне сайта. Если вы пожелаете использовать другие имена директорий, то вам необходимо будет внести соответствующие правки в дальнейшем. ...