Обработка токенов форм

Доступно:

JIRA 4.1 и более поздних версий.

Обзор и цель

JIRA 4.1 и более поздние версии используют механизм аутентификации маркера, который используется всякий раз, когда действия JIRA выполняются либо посредством запроса ссылки, либо отправки формы. Это предоставляет JIRA средство для проверки происхождения и намерения запроса, тем самым добавляя дополнительный уровень защиты от XSRF (подделка запросов на межсайтовый запрос). Хотя основной продукт JIRA и связанные с ним плагины используют этот механизм обработки маркеров по умолчанию, не связанные с плагинами плагины или те, которые разрабатываются третьими лицами, могут и не быть.

В этом документе содержатся инструкции разработчикам плагинов JIRA о том, как включить этот механизм обработки токенов в плагины JIRA.

Токены форм

JIRA 4.1 требует, чтобы действия WebWork обладали токенами, которые затем проверяются при отправке формы на сервер JIRA. Это механизм «выборки в», действия в котором должны заявлять, что они требуют наличия токена в запросе.

Инструкции для разработчиков плагинов

В следующих подразделах содержится подробная информация о том, как защитить код от XSRF, выполнив обработку токена формы в вашем плагине JIRA.

Имейте в виду, что после того, как обработка токена формы была внедрена в плагин JIRA:

  • Любые функции, которые используют очистку экрана, например функцию «создать подзадачу» в FishEye, будут нарушены.
  • Конечные точки API REST не будут затронуты, если они не используют кодировку формы.

Действия JIRA WebWork

Чтобы включить проверку токена xsrf для определенного класса Action

  1. Найдите метод, вызванный выполнением действия (по умолчанию этот метод называется doExecute ())
  2. Добавьте комментарий @ com.atlassian.jira.security.xsrf.RequiresXsrfCheck к этому методу

Предоставление токена в HTML-формах

Токен включен по умолчанию при использовании jiraform

Токен может быть включен в ваши собственные JSP, которые не используют jiraforms, добавив следующий код:


<webwork:component name="'atl_token'" value="/xsrfToken" template="hidden.jsp"/>

Следующий код может быть добавлен в шаблоны Velocity:


<input type="hidden" name="atl_token" value="$atl_token" />

Предоставление токена в HTML-ссылках

Вы можете сделать следующее в JSP:


MyAction.jspa?myParameter=true&atl_token=<webwork:property value="/xsrfToken"/>

 

или Шаблоны Velocity:


MyAction.jspa?myParameter=true&atl_token=${atl_token}

Доступ к токену программно

Чтобы получить токен текущего пользователя, вам необходимо сделать следующий вызов:


import com.atlassian.jira.security.xsrf.XsrfTokenGenerator;
XsrfTokenGenerator xsrfTokenGenerator = ComponentManager.getComponentInstanceOfType(XsrfTokenGenerator.class);
String token = xsrfTokenGenerator.generateToken(request);

Написания скрипта

Скрипты(Сценарии, которые имеют доступ к JIRA удаленно, могут иметь проблемы с получением или возвратом токена безопасности или поддержкой сеанса HTTP с сервером. Существует способ для сценариев отказаться от проверки маркера, предоставив в запросе следующий HTTP-заголовок:


X-Atlassian-Token: no-check

ПОХОЖИЕ ТЕМЫ

  • Защита XSRF в Confluence.

Для получения дополнительной информации см. страницу проекта Open Web Application

 

По материалам Atlassian JIRA  Server Developer Form token handling