Форум программистов, компьютерный форум, киберфорум
Joomla
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
177 / 62 / 3
Регистрация: 17.11.2011
Сообщений: 318
1

Создание безопасного компонента для jomla 2.5

05.02.2013, 23:38. Показов 617. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день форумчане.
Озадачился я вопросом о безопасности создаваемого компонента.
Поиск по форуму ни чего не дал.
Такое ощущение, что либо joomla и безопасность понятия не совместимые, либо у всех всё на столько замечательно с безопасностью, что вопросов они не задают.

Предлагаю всем в этой ветке поделиться наработками и замечаниями по созданию безопасного компонента.

Начну с того что имею.
По мере поступления инфы так же буду отписываться.

Естественно мы ограничиваем доступ к php файлам из вне. Для этого все файлы начинаются со строк
PHP
1
2
3
<?php
// no direct access
defined('_JEXEC') or die;
Дальше, что приходит в голову, это ограничить возможность создания и редактирования материалов в компоненте. Для этого в шаблоне вывода данных (layout) выводим "токен"
PHP
1
<?php echo JHtml::_('form.token'); ?>
а в контроллере обрабатывает его. Например, функция save() будет у нас начинаться со строк
PHP
1
2
// Check for request forgeries.
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
и если проверка не пройдена, то полностью останавливаем joomla.

Но как быть с отображением информации в компоненте?
Даже если не создан пункт меню или он не отображается пользователю с его правами доступа, то достаточно набрать в браузере что-то такое:
http:// mysite.domen/index.php?option=com_mycomponent&view=myview
и ву-а-ля... Пользователь видит то, что мы не хотели бы показывать ему.
Как с этим бороться?

Я, например, сделал вот что.
Функция getListQuery() модели начинается с такой конструкции:
PHP
1
2
3
4
5
6
7
// получаем объект пользователя
$user = JFactory::getUser();
// проверяем если "гость", то просим авторизоваться
if($user->get('guest')) {jexit('Please autorise!'); }
// если прошёл первую проверку, то проверяем определённые права пользователя. 
// В случае чего предупреждаем, что ещё "нос не дорос".
if (!$user->authorise('core.edit.state', 'com_mycomponent')){jexit('You have no access!');}
Мера получилась довольно эффективная.
Тем не менее, я рассматриваю это решение как костыль.
Не хотелось бы делать проверки по принципу "во всех местах и побольше".

Может кто ещё чем поделится.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.02.2013, 23:38
Ответы с готовыми решениями:

Слайдер для Jomla 2.5
Сделал из готового Jquery-слайдера модуль. В J.script-код не лазил, только вывел задержку прокрутки...

Редактор для jomla 1.6
Посоветуйте редактор для joomla 1.6 с таблицами. JCE пробовал не работает нормально корявый еще...

Установка шаблона для 1.5 на Jomla 3.2
Здравствуйте! Можно ли установить шаблон, который написан для joomla 1.5 на joomla 3.2. Я попытался...

Создание безопасного подключения в браузере
Добрый день! Надеюсь на Вашу помощь. Началось всё после установки Windows 10. В браузере Хром...

0
05.02.2013, 23:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.02.2013, 23:38
Помогаю со студенческими работами здесь

Создание компонента, при добавлении автоматически получить Parent фокусированного компонента
Привет всем, вот ни разу не писал еще компоненты, начал разбираться, все просто, понятно, доступно,...

Создание Native API компонента для 1C
Задача состоит в том чтобы сделать внешний компонент который сможет обрабатывать события типа...

Создание метода для несуществующего компонента
Есть TabSheet. На ней в процессе выполнения программы создается компонент Image. TTabSheet *pPage...

Создание визуального компонента наследника базового компонента
Добрый день! В VS 2005 было возможно создать элемент Windows Forms control library на базе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru