Все о Joomla 1.5

...заметки Котофеича

 
  • Increase font size
  • Default font size
  • Decrease font size

Home Статьи статьи Как защитить компонент от аттак подменой запроса?

Как защитить компонент от аттак подменой запроса?

E-mail Печать PDF

Что такое 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.