Как защитить компонент от аттак подменой запроса?
Что такое CSRF аттака?
Кросс-сайтовая подделка запроса - CSRF аттака основывается на выполнении несанкционированных запросов на сайте. Например пользователь может легко подменить выполнить следующую ссылку (если он имеет даже примитивный доступ к админке):
http://some/joomla/site/administrator/index2.php?option=com_users&task=delete...
Чтобы защититься от CSRF аттак, в форму должен быть добавлен специальнаый код токена запроса. Токен запроса - это случайная строка, которая используется для аутентификации, и действует на время выполнении сессиии пользователя. Эта простая мера защиты является очень эффективной и позволяет избежать большого процента потенциальных CSRF аттак, однако не дает возможности защититься полностью.
Защита от повторяющихся CSRF аттак
Посредством токена можно защититься от повторяющихся аттак. Примерно это действует так: для пользователя заводится сессия, и случайный ряд чисел и при обновлении страницы числа меняются. В итоге пользователь не может отправить с одной страницы запрос дважды.
Специально для этого Фрэймворк Joomla содержит очень простую функцию , которая одинаково хорошо защитит POST и GET запросы.
POST запрос
Для того чтобы защитить данные передаваемые формой через POST-запрос, добавьте в вашу форму следующую строку:
<?php echo JHTML::_( 'form.token' ); ?>
В итоге эта строка будет выглядеть так:
<input type="hidden" name="1234567890abcdef1234567890abcdef" value="1" />
GET запрос
Для GET запроса, вы должны добавить к адресной строке следующий код:
echo JRoute::_( 'index.php?option=com_example&controller=object1&task=save&'.
JUtility::getToken() .'=1' );
Проверка токена
Прежде чем обработать полученные данные, вы должны проверить токен следующим способом:
JRequest::checkToken() or die( 'Invalid Token' );
Также вы можете указать конкретный вид обрабатываемых данных:
JRequest::checkToken( 'get' ) or die( 'Invalid Token' );
Рекомендуемые процедуры по обеспечению безопасности
Хотя эти методы и позволят предотвратить часть аттак, вы как системный администратор должны обязательно выполнять следующие процедуры:
- Не просматривать другие сайты в том же бразуере, когда вы зашли на свой сайт
- Обязательно нажимайте выход на сайте, когда завершите все действия
- Не авторизируйтесь на своем сайте, если не собираетесь делать никаких действий
- Убедитесь что в адресной строке находится именно ваш адрес сайта
Следуя данным инструкциям при веб-серфинге вы избавитесь от множество угроз атак на ваш сайт
(прим. Котофеича: Думаю это относится только к незнакомым вам сайтам).
Статья - переведена с английского с официального сайта Joomla.
Как защитить компонент от аттак подменой запроса? - Генератор расширений Joomla и многое другое на нашем сайте посвященном работе расширений, компонентов, модулей, плагинов для линейки Joomla. Отправляйте ссылку на страницу своим друзьям и в социальные сети воспользовавшись графическими иконками выше.