Авг
24

Защищаем компонент Joomla от атак с помощью подмены запросов

CSRF атака. Что это вообще такое?

CSRF атака или подмена запроса базируется на исполнении запрещенных запросов на любом сайте. К примеру, любой продвинутый взломщик может легко подменить запрос вида (при наличии доступа к админке сайта):

http://some//site/administrator/index2.?option=com_users&task=delete...

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

Защита от постоянных CSRF аттак

Посредством токена можно защититься от постоянных атак. Токен будет работать по такому алгоритму: для каждого пользователя начинается сессия и генерируется случайна строка, которая изменяется при обновлении страницы. Данный подход уничтожает возможность послать запрос дважды с одной страницы.
Именно радио этого ядро Joomla снабдили простой функцией, которая одинаково хорошо работает и способна защитить POST и GET запросы.

POST запрос

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

1
< ?php echo JHTML::_( 'form.token' ); ?>

В результате строка примет такой вид:

1
<input type="hidden" name="1234567890abcdef1234567890abcdef" value="1" />

GET запрос

Для GET запросанужно добавить такой код:

1
2
echo JRoute::_( 'index.php?option=com_example&amp;controller=object1&amp;task=save&amp;'.
JUtility::getToken() .'=1' );

Проверка токена

Перед обработкой данных формы нужно проверить токен:

1
JRequest::checkToken() or die( 'Invalid Token' );

Можно отметить и конкретный тип запроса, но это в целях безопасности лучше не делать:

1
JRequest::checkToken( 'get' ) or die( 'Invalid Token' );

Что ещё можно рекомендовать для улучшения безопасности?

Описанные выше методы являются надежной защитой от CSRF атак:

  • Не просматривать сомнительные сайты в том же браузере, когда вы зашли в админку своего сайта
  • Обязательно осуществлять программный выход из админки, иначе возможна утечка данных
  • Не выполняйте авторизацию на своем сайте, если вам не нужно с ним работать прямо сейчас
  • Проверьте адресную строку на корректность адреса. Хакеры зачастую подменяют адреса

Инструкции простые, но они отлично защитят от атак на ваш новостной портал. Не дадим хакерам шансов!.

Взято с официального сайта Joomla.

Прокомментировать

Рубрики

Облако меток

В прямом эфире