Joomla контроль доступа и модифицированный index.php - PullRequest
1 голос
/ 24 октября 2011

Я работаю с сайтом Joomla, чей файл index.php был изменен, чтобы изменить поведение контроля доступа по умолчанию. Учитывая, что это Joomla 1.5, эта строка:

$mainframe->authorize($Itemid);

был обернут в некоторый условный код, который ищет удаленный IP-адрес и не вызывает authorize(), если IP-адрес находится в белом списке [*]. Это позволяет беспрепятственный доступ к определенным ресурсам без входа в систему.

Хотя я новичок в разработке Joomla, я предполагаю, что это не лучший способ сделать это. С одной стороны, это, вероятно, означает повторное исправление index.php в случае будущего обновления Joomla. Каков наилучший альтернативный подход к перехвату проверки подлинности?

[*] Это еще одна загадка: управление IP-адресами осуществляется через интерфейс с помощью компонента, называемого «IP-фильтры». В components/com_ipfilter есть совершенно пустой каталог, но в administrator/components/com_ipfilter более привлекательный. Компонент хранит данные в таблице с именем kip_filters (почему 'k'?), А authorUrl, указанный в файле манифеста компонента, переходит на фармацевтическую страницу, похожую на спам. Все довольно тревожно ...

Ответы [ 3 ]

2 голосов
/ 31 октября 2011

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

Посмотрите надокументация по системным событиям - http://docs.joomla.org/Plugin/Events/System

--- Подробнее ---

Если посмотреть на порядок выполнения API, вызов authorize() произойдет независимо от того, что (http://docs.joomla.org/API_Execution_Order). Поскольку поведение по умолчанию заключается в вызове authorize(), вам придется обманом заставить его вернуть положительный ответ.

Ваш плагин должен запускаться с помощью onAfterInitialise, а вам следует манипулировать JUser.Когда вы вызываете authorize(), функция нуждается в идентификаторе пользователя, который она получает из объекта JUser, и функции * 1016. * Все, что вам нужно сделать, - это создать пользователя с нужными вам разрешениями, а затем подключить плагин к идентификатору пользователя, чтобычто authorize() возвращает истину.

0 голосов
/ 25 октября 2011

Я бы посоветовал изменить префикс таблицы с jos_ на случайный, например hsfdaghadfg_

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

0 голосов
/ 24 октября 2011

Для проблем безопасности вы можете использовать эти шаги, и я также дам вам хороший компонент IP-фильтра:

Прежде всего, это самый важный компонент, который вы можете иметь для joomla: http://extensions.joomla.org/extensions/access-a-security/site-security/site-protection/16363 он дает вам наиболее важные способы избежать любых взломов, спама или php-ошибок, а также обеспечивает очень быстрое обновление для вашего сайта joomla :), а также предлагает менеджер IP-черных списков, который является полным решением вашей проблемы.

Надеюсь, этот пост даст кому-то свет! С Уважением, Раид Раби

...